From: Jan Beulich Date: Mon, 30 Aug 2021 13:19:31 +0000 (+0200) Subject: libxenguest/x86: ensure CPUID[1].EBX[32:16] is non-zero for HVM X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~246 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=daaf007eb3467f900a2e20fadbc4c6f3bfcaa356;p=xen.git libxenguest/x86: ensure CPUID[1].EBX[32:16] is non-zero for HVM We unconditionally set HTT, so merely doubling the value read from hardware isn't going to be correct if that value is zero. Reported-by: Julien Grall Signed-off-by: Jan Beulich Tested-by: Julien Grall Acked-by: Andrew Cooper --- diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 0c9c4fefc1..198892ebdf 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -594,7 +594,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to avoid * overflow. */ - if ( !(p->basic.lppp & 0x80) ) + if ( !p->basic.lppp ) + p->basic.lppp = 2; + else if ( !(p->basic.lppp & 0x80) ) p->basic.lppp *= 2; switch ( p->x86_vendor )