In fact, the core vCPU search algorithm remains the same in the latest kernel: iterate all vCPUs, if mpidr matches, inject. next version will based on latest kernel.This work is based on v5.4, and here is test data:
This is a 4 year old kernel. I'm afraid you'll have to provide
something that is relevant to a current (e.i. v6.5) kernel.
1. I utilized the ipi_benchmark (https://patchwork.kernel.org/project/linux-arm-kernel/patch/20171211141600.24401-1-ynorov@xxxxxxxxxxxxxxxxxx/) with a modification to the Normal IPI target in the following manner: smp_call_function_single(31, handle_ipi, &time, 1).Based on the test results, the performance of vm with less than 16 cores remains almost the same,
while significant improvement can be observed with more than 16
cores.
This triggers multiple questions:
- what is the test being used? on what hardware? how can I reproduce
this data?
- which current guest OS *currently* make use of broadcast or 1:NYes, arm64 linux almost never send broadcast ipi. I will use another test data to prove performence improvement
SGIs? Linux doesn't and overall SGI multicasting is pretty useless
to an OS.
[...]
thanks to mention that, I also checked the relevant code, guest can't enable RSS, it was my oversight. This part has removed in next version.
/*
- * Compare a given affinity (level 1-3 and a level 0 mask, from the SGI
- * generation register ICC_SGI1R_EL1) with a given VCPU.
- * If the VCPU's MPIDR matches, return the level0 affinity, otherwise
- * return -1.
+ * Get affinity routing index from ICC_SGI_* register
+ * format:
+ * aff3 aff2 aff1 aff0
+ * |- 8 bits -|- 8 bits -|- 8 bits -|- 4 bits or 8bits -|
OK, so you are implementing RSS support:
- Why isn't that mentioned anywhere in the commit log?
- Given that KVM actively limits the MPIDR to 4 bits at Aff0, how does
it even work the first place?
- How is that advertised to the guest?
- How can the guest enable RSS support?
This is not following the GICv3 architecture, and I'm sceptical thatthere are nothing left, all the patchs are here
it actually works as is (I strongly suspect that you have additional
patches...).
With regards
M.