Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> writes: > From: Suraj Jitindar Singh <surajjs@xxxxxxxxxx> > > The test in x86/apic.c named test_pv_ipi is used to test for a kernel > bug where a guest making the hcall KVM_HC_SEND_IPI can trigger an out of > bounds access. > > If the host doesn't implement this hcall then the out of bounds access > cannot be triggered. > > Detect the case where the host doesn't implement the KVM_HC_SEND_IPI > hcall and skip the test when this is the case, as the test doesn't > apply. > > Output without patch: > FAIL: PV IPIs testing > > With patch: > SKIP: PV IPIs testing: h-call not available > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> > --- > x86/apic.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/x86/apic.c b/x86/apic.c > index eb785c4..bd44b54 100644 > --- a/x86/apic.c > +++ b/x86/apic.c > @@ -8,6 +8,8 @@ > #include "atomic.h" > #include "fwcfg.h" > > +#include <linux/kvm_para.h> > + > #define MAX_TPR 0xf > > static void test_lapic_existence(void) > @@ -638,6 +640,15 @@ static void test_pv_ipi(void) > unsigned long a0 = 0xFFFFFFFF, a1 = 0, a2 = 0xFFFFFFFF, a3 = 0x0; > > asm volatile("vmcall" : "=a"(ret) :"a"(KVM_HC_SEND_IPI), "b"(a0), "c"(a1), "d"(a2), "S"(a3)); > + /* > + * Detect the case where the hcall is not implemented by the hypervisor and > + * skip this test if this is the case. Is the hcall isn't implemented then > + * the bug that this test is trying to catch can't be triggered. > + */ > + if (ret == -KVM_ENOSYS) { > + report_skip("PV IPIs testing: h-call not available"); > + return; > + } > report("PV IPIs testing", !ret); > } Should we be checking CPUID bit (KVM_FEATURE_PV_SEND_IPI) instead? -- Vitaly