Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d33a3c8c authored by Christoffer Dall's avatar Christoffer Dall Committed by Christoffer Dall
Browse files

KVM: arm/arm64: Check that system supports split eoi/deactivate



Some systems without proper firmware and/or hardware description data
don't support the split EOI and deactivate operation.

On such systems, we cannot leave the physical interrupt active after the
timer handler on the host has run, so we cannot support KVM with an
in-kernel GIC with the timer changes we are about to introduce.

This patch makes sure that trying to initialize the KVM GIC code will
fail on such systems.

Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarChristoffer Dall <cdall@linaro.org>
parent 006df0f3
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1228,6 +1228,8 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare
		goto out_unmap_rdist;

	gic_populate_ppi_partitions(node);

	if (static_key_true(&supports_deactivate))
		gic_of_setup_kvm_info(node);
	return 0;

@@ -1517,6 +1519,8 @@ gic_acpi_init(struct acpi_subtable_header *header, const unsigned long end)
		goto out_fwhandle_free;

	acpi_set_irq_model(ACPI_IRQ_MODEL_GIC, domain_handle);

	if (static_key_true(&supports_deactivate))
		gic_acpi_setup_kvm_info();

	return 0;
+4 −2
Original line number Diff line number Diff line
@@ -1367,6 +1367,7 @@ static void __init gic_of_setup_kvm_info(struct device_node *node)
	if (ret)
		return;

	if (static_key_true(&supports_deactivate))
		gic_set_kvm_info(&gic_v2_kvm_info);
}

@@ -1599,6 +1600,7 @@ static int __init gic_v2_acpi_init(struct acpi_subtable_header *header,
	if (IS_ENABLED(CONFIG_ARM_GIC_V2M))
		gicv2m_init(NULL, gic_data[0].domain);

	if (static_key_true(&supports_deactivate))
		gic_acpi_setup_kvm_info();

	return 0;