Skip to content
This repository has been archived by the owner on Jun 21, 2022. It is now read-only.

Commit

Permalink
arm/arm64: Add IPI test
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Jones <drjones@redhat.com>
  • Loading branch information
Andrew Jones committed Sep 8, 2015
1 parent 6a63201 commit 05af9b0
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 1 deletion.
58 changes: 58 additions & 0 deletions arm/ipi-test.c
@@ -0,0 +1,58 @@
/*
* Test sending an IPI and handling IRQ exceptions.
*
* Copyright (C) 2015, Red Hat Inc, Andrew Jones <drjones@redhat.com>
*
* This work is licensed under the terms of the GNU LGPL, version 2.
*/
#include <libcflat.h>
#include <asm/setup.h>
#include <asm/processor.h>
#include <asm/gic.h>
#include <asm/smp.h>
#include <asm/barrier.h>

static volatile bool ready, acked, done;

static void irq_handler(struct pt_regs *regs __unused)
{
gic_irq_ack();
acked = true;
}

static void ipi_test(void)
{
gic_enable();
#ifdef __arm__
install_exception_handler(EXCPTN_IRQ, irq_handler);
#else
install_irq_handler(EL1H_IRQ, irq_handler);
#endif
local_irq_enable();
ready = true;
wfi();
report("IPI", acked);
done = true;
halt();
}

int main(void)
{
if (nr_cpus < 2) {
printf("ipi-test requires '-smp 2'\n");
abort();
}

gic_enable();
smp_boot_secondary(1, ipi_test);

while (!ready)
cpu_relax();

gic_send_sgi(1, 1);

while (!done)
cpu_relax();

return report_summary();
}
4 changes: 3 additions & 1 deletion config/config-arm-common.mak
Expand Up @@ -11,7 +11,8 @@ endif

tests-common = \
$(TEST_DIR)/selftest.flat \
$(TEST_DIR)/spinlock-test.flat
$(TEST_DIR)/spinlock-test.flat \
$(TEST_DIR)/ipi-test.flat

all: test_cases

Expand Down Expand Up @@ -70,3 +71,4 @@ test_cases: $(generated_files) $(tests-common) $(tests)

$(TEST_DIR)/selftest.elf: $(cstart.o) $(TEST_DIR)/selftest.o
$(TEST_DIR)/spinlock-test.elf: $(cstart.o) $(TEST_DIR)/spinlock-test.o
$(TEST_DIR)/ipi-test.elf: $(cstart.o) $(TEST_DIR)/ipi-test.o

0 comments on commit 05af9b0

Please sign in to comment.