From: "Teddy Astie" <teddy.astie@vates.tech>
To: "Jan Beulich" <jbeulich@suse.com>, "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Roger Pau Monné" <roger.pau@citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [RFC PATCH] x86/intel: Add recent CPU models model-specific LBRs
Date: Thu, 26 Mar 2026 12:54:12 +0000 [thread overview]
Message-ID: <7ccb48df-8255-4e01-9367-f9496fe2ee18@vates.tech> (raw)
In-Reply-To: <1e95cf58-0e40-4cfe-8ac9-cd31d97f8330@suse.com>
Le 26/03/2026 à 12:05, Jan Beulich a écrit :
> On 26.03.2026 11:35, Tu Dinh wrote:
>> On 26/03/2026 11:21, Teddy Astie wrote:
>>> Add all CPU models that supports these MSR as they are defined in February 2026 SDM.
>>> It uses the same list that span from Skylake to latest CPU models as a part of
>>>
>>> MSRs in the 6th—13th generation Intel® Core™ processors,
>>> 1st—5th generation Intel® Xeon® Scalable processor families,
>>> Intel® Core™ Ultra 7 processors, 8th generation Intel® Core™ i3
>>> processors, Intel® Xeon® E processors, Intel® Xeon® 6 P-Core
>>> processors, Intel® Xeon® 6 E-Core processors, and Intel® Series 2
>>> Core™ Ultra processors
>>>
>>> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
>>> ---
>>> Currently, none of these MSR are exposed on these CPUs, leading to BSOD [1]
>>> in Windows when it is supposedly trying to debug some program.
>>>
>>> I guess [2] is also caused by these missing MSRs.
>>>
>>> [1] https://xcp-ng.org/forum/topic/12008/application-on-vm-causing-bsod
>>> [2] https://lore.kernel.org/xen-devel/ced16fca-3b55-40a1-a7e2-ffadd9707394@vates.tech/
>>>
>>> xen/arch/x86/hvm/vmx/vmx.c | 16 ++++++++++++++++
>>> 1 file changed, 16 insertions(+)
>>>
>>
>> I don't think CPU models with architectural LBRs should be stuffed
>> together with the model-specific ones instead of having their own case.
>
> I agree. We want to at least determine (or even enforce) how many LBRs
> are accessible. After all we can't be sure the DEPTH field hasn't been
> altered before we gained control.
>
> Beyond that, because arch-LBR enabling is a significant effort, I guess
> using the existing machinery for the time being might be okay.
>
While Architectural LBR support could be useful on its own, I don't
think it would be enough.
If the guest is started without architectural LBR, the guest could
default into using model-specific ones (basing eventually on
Family-Model). That can happen if we migrate a guest from a Skylake-era
CPU to a Granite Rapids, yet we still need the guest to keep access to
model-specific ones, especially if they are stable across these CPU
generations.
>> With that said, short of fully implementing arch LBR, it might make
>> sense to at least stub out the LER MSRs to allow Windows to read them
>> without crashing, as certain versions of Windows use LER MSR indexes
>> without checking the arch LBR CPUID bit.
>
> This would be too Windows-centric for my taste.
>
A few specific LBR MSR happens to be stable and are identical between
architectural and model-specific lists.
MSR_IA32_LASTBRANCHFROMIP 0x000001db
MSR_IA32_LASTBRANCHTOIP 0x000001dc
MSR_IA32_LASTINTFROMIP 0x000001dd
MSR_IA32_LASTINTTOIP 0x000001de
In Xen, we already consider them somewhat "architectural", for instance,
traps-setup.c:init_ler always uses MSR_IA32_LASTINTFROMIP unless you are
running on a Pentium 4.
Perhaps for these ones at least, we should always expose them (unless
you are a Pentium 4) ? It may be enough to prevent some guests from
crashing when trying to access it.
Currently, it is only exposed if the CPU family is in this known list.
> Jan
>
Teddy
--
Teddy Astie | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
next prev parent reply other threads:[~2026-03-26 12:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 10:19 [RFC PATCH] x86/intel: Add recent CPU models model-specific LBRs Teddy Astie
2026-03-26 10:35 ` Tu Dinh
2026-03-26 11:02 ` Jan Beulich
2026-03-26 12:54 ` Teddy Astie [this message]
2026-03-26 13:13 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7ccb48df-8255-4e01-9367-f9496fe2ee18@vates.tech \
--to=teddy.astie@vates.tech \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=ngoc-tu.dinh@vates.tech \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.