[kvm-unit-tests RFC 14/15] arm/arm64: gic: Generalize ipi_enable()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For ITS test we plan to reuse the ipi_enable() code to
install the IRQ handler and enable the IRQ at CPU level.
Let's rename the function into setup_irq().

Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx>
---
 arm/gic.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/arm/gic.c b/arm/gic.c
index 88c5f49..cbaab3f 100644
--- a/arm/gic.c
+++ b/arm/gic.c
@@ -134,6 +134,8 @@ static void check_irqnr(u32 irqnr)
 		bad_irq[smp_processor_id()] = irqnr;
 }
 
+typedef void (*handler_t)(struct pt_regs *regs __unused);
+
 static void ipi_handler(struct pt_regs *regs __unused)
 {
 	u32 irqstat = gic_read_iar();
@@ -209,20 +211,20 @@ static void ipi_test_smp(void)
 	report_prefix_pop();
 }
 
-static void ipi_enable(void)
+static void setup_irq(handler_t handler)
 {
 	gic_enable_defaults();
 #ifdef __arm__
-	install_exception_handler(EXCPTN_IRQ, ipi_handler);
+	install_exception_handler(EXCPTN_IRQ, handler);
 #else
-	install_irq_handler(EL1H_IRQ, ipi_handler);
+	install_irq_handler(EL1H_IRQ, handler);
 #endif
 	local_irq_enable();
 }
 
 static void ipi_send(void)
 {
-	ipi_enable();
+	setup_irq(ipi_handler);
 	wait_on_ready();
 	ipi_test_self();
 	ipi_test_smp();
@@ -232,7 +234,7 @@ static void ipi_send(void)
 
 static void ipi_recv(void)
 {
-	ipi_enable();
+	setup_irq(ipi_handler);
 	cpumask_set_cpu(smp_processor_id(), &ready);
 	while (1)
 		wfi();
@@ -323,7 +325,7 @@ int main(int argc, char **argv)
 	if (argc < 2) {
 
 		report_prefix_push("ipi");
-		ipi_enable();
+		setup_irq(ipi_handler);
 		ipi_test_self();
 		check_spurious();
 		report_prefix_pop();
-- 
2.5.5

_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux