Get affinity levels from mpidr and populate it in sgi before
sending sgi in arm_cpu_kick().

Signed-off-by: Lokesh Vutla <[email protected]>
---
 hypervisor/arch/arm-common/control.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hypervisor/arch/arm-common/control.c 
b/hypervisor/arch/arm-common/control.c
index c5476b2..18b7f8e 100644
--- a/hypervisor/arch/arm-common/control.c
+++ b/hypervisor/arch/arm-common/control.c
@@ -37,9 +37,13 @@ void arm_cpu_park(void)
 
 void arm_cpu_kick(unsigned int cpu_id)
 {
+       u64 mpidr = per_cpu(cpu_id)->mpidr;
        struct sgi sgi = {};
 
-       sgi.targets = 1 << cpu_id;
+       sgi.targets = 1 << MPIDR_AFFINITY_LEVEL(mpidr, 0);
+       sgi.aff1 = MPIDR_AFFINITY_LEVEL(mpidr, 1);
+       sgi.aff2 = MPIDR_AFFINITY_LEVEL(mpidr, 2);
+       sgi.aff3 = MPIDR_AFFINITY_LEVEL(mpidr, 3);
        sgi.id = SGI_EVENT;
        irqchip_send_sgi(&sgi);
 }
-- 
2.13.0

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to