* [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection
@ 2025-09-24 11:00 Roger Pau Monne
2025-09-24 11:50 ` Andrew Cooper
[not found] ` <2d17d2d502df489f97b51e43a2d86535@DM6PR03MB5227.namprd03.prod.outlook.com>
0 siblings, 2 replies; 10+ messages in thread
From: Roger Pau Monne @ 2025-09-24 11:00 UTC (permalink / raw)
To: xen-devel; +Cc: oleksii.kurochko, Roger Pau Monne, Jan Beulich, Andrew Cooper
Otherwise the check for the SS feature in
check_memory_type_self_snoop_errata() fails unconditionally, which leads to
X86_FEATURE_XEN_SELFSNOOP never being set.
We could also avoid this by not doing the reset_cpuinfo() for the BSP in
identify_cpu(), because SS detection uses boot_cpu_data. However that
creates an imbalance on the state of the BSP versus the APs in the
identify_cpu() code.
I've opted for the less controversial solution of populating FEATURESET_1d
in generic_identify(), as the value is already there. The same is done for
the AMD faulting probe code.
Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata")
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/cpu/common.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 530b9eb39abc..35dcdf0c8801 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -490,6 +490,9 @@ static void generic_identify(struct cpuinfo_x86 *c)
c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0);
c->phys_proc_id = c->apicid;
+ /* Early init of Self Snoop support requires 0x1.edx. */
+ c->x86_capability[FEATURESET_1d] = edx;
+
eax = cpuid_eax(0x80000000);
if ((eax >> 16) == 0x8000)
c->extended_cpuid_level = eax;
--
2.51.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-24 11:00 [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection Roger Pau Monne @ 2025-09-24 11:50 ` Andrew Cooper [not found] ` <2d17d2d502df489f97b51e43a2d86535@DM6PR03MB5227.namprd03.prod.outlook.com> 1 sibling, 0 replies; 10+ messages in thread From: Andrew Cooper @ 2025-09-24 11:50 UTC (permalink / raw) To: Roger Pau Monne, xen-devel; +Cc: oleksii.kurochko, Jan Beulich, Andrew Cooper On 24/09/2025 4:00 am, Roger Pau Monne wrote: > Otherwise the check for the SS feature in > check_memory_type_self_snoop_errata() fails unconditionally, which leads to > X86_FEATURE_XEN_SELFSNOOP never being set. > > We could also avoid this by not doing the reset_cpuinfo() for the BSP in > identify_cpu(), because SS detection uses boot_cpu_data. Doesn't this, mean ... > However that > creates an imbalance on the state of the BSP versus the APs in the > identify_cpu() code. > > I've opted for the less controversial solution of populating FEATURESET_1d > in generic_identify(), as the value is already there. The same is done for > the AMD faulting probe code. > > Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> ... this Fixes tag is incorrect? ~Andrew ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <2d17d2d502df489f97b51e43a2d86535@DM6PR03MB5227.namprd03.prod.outlook.com>]
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection [not found] ` <2d17d2d502df489f97b51e43a2d86535@DM6PR03MB5227.namprd03.prod.outlook.com> @ 2025-09-24 13:40 ` Roger Pau Monné 2025-09-25 7:03 ` Jan Beulich 0 siblings, 1 reply; 10+ messages in thread From: Roger Pau Monné @ 2025-09-24 13:40 UTC (permalink / raw) To: Andrew Cooper Cc: xen-devel@lists.xenproject.org, oleksii.kurochko@gmail.com, Jan Beulich On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: > On 24/09/2025 4:00 am, Roger Pau Monne wrote: > > Otherwise the check for the SS feature in > > check_memory_type_self_snoop_errata() fails unconditionally, which leads to > > X86_FEATURE_XEN_SELFSNOOP never being set. > > > > We could also avoid this by not doing the reset_cpuinfo() for the BSP in > > identify_cpu(), because SS detection uses boot_cpu_data. > > Doesn't this, mean ... Well, that's the reason for the rant here. The reset at the top of identify_cpu() has been there since 2005. It's arguably to make sure the BSP and the APs have the same empty state in the passed cpuinfo_x86 struct, as for the BSP this would be already partially initialized due to what's done in early_cpu_init(). The underlying question is whether we would rather prefer to not do the reset for the BSP, but that would lead to differences in the contents of cpuinfo_x86 struct between the BSP and the APs. In the past we have arranged for leaves needed early to be populated in generic_identify(), like FEATURESET_e21a, hence the proposed patch does that for FEATURESET_1d. > > However that > > creates an imbalance on the state of the BSP versus the APs in the > > identify_cpu() code. > > > > I've opted for the less controversial solution of populating FEATURESET_1d > > in generic_identify(), as the value is already there. The same is done for > > the AMD faulting probe code. > > > > Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > ... this Fixes tag is incorrect? I think the Fixes tag is accurate; the code was OK before that change. Nothing in c_early_init hooks depended on (some of) the x86_capability fields being populated, which is required after the change. Thanks, Roger. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-24 13:40 ` Roger Pau Monné @ 2025-09-25 7:03 ` Jan Beulich 2025-09-25 7:34 ` Roger Pau Monné 0 siblings, 1 reply; 10+ messages in thread From: Jan Beulich @ 2025-09-25 7:03 UTC (permalink / raw) To: Roger Pau Monné Cc: xen-devel@lists.xenproject.org, oleksii.kurochko@gmail.com, Andrew Cooper On 24.09.2025 15:40, Roger Pau Monné wrote: > On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: >> On 24/09/2025 4:00 am, Roger Pau Monne wrote: >>> Otherwise the check for the SS feature in >>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to >>> X86_FEATURE_XEN_SELFSNOOP never being set. >>> >>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in >>> identify_cpu(), because SS detection uses boot_cpu_data. >> >> Doesn't this, mean ... > > Well, that's the reason for the rant here. The reset at the top of > identify_cpu() has been there since 2005. It's arguably to make sure > the BSP and the APs have the same empty state in the passed > cpuinfo_x86 struct, as for the BSP this would be already partially > initialized due to what's done in early_cpu_init(). > > The underlying question is whether we would rather prefer to not do > the reset for the BSP, but that would lead to differences in the > contents of cpuinfo_x86 struct between the BSP and the APs. In the > past we have arranged for leaves needed early to be populated in > generic_identify(), like FEATURESET_e21a, hence the proposed patch > does that for FEATURESET_1d. > >>> However that >>> creates an imbalance on the state of the BSP versus the APs in the >>> identify_cpu() code. >>> >>> I've opted for the less controversial solution of populating FEATURESET_1d >>> in generic_identify(), as the value is already there. The same is done for >>> the AMD faulting probe code. >>> >>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >> >> ... this Fixes tag is incorrect? > > I think the Fixes tag is accurate; the code was OK before that change. > Nothing in c_early_init hooks depended on (some of) the x86_capability > fields being populated, which is required after the change. I agree. Hence: Reviewed-by: Jan Beulich <jbeulich@suse.com> I wonder though whether while there we wouldn't want to also store ecx if we already have it. (Really there is the question of whether we haven't other cpu_has_* uses which similarly come "too early".) Jan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 7:03 ` Jan Beulich @ 2025-09-25 7:34 ` Roger Pau Monné 2025-09-25 7:37 ` Jan Beulich 0 siblings, 1 reply; 10+ messages in thread From: Roger Pau Monné @ 2025-09-25 7:34 UTC (permalink / raw) To: Jan Beulich Cc: xen-devel@lists.xenproject.org, oleksii.kurochko@gmail.com, Andrew Cooper On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: > On 24.09.2025 15:40, Roger Pau Monné wrote: > > On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: > >> On 24/09/2025 4:00 am, Roger Pau Monne wrote: > >>> Otherwise the check for the SS feature in > >>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to > >>> X86_FEATURE_XEN_SELFSNOOP never being set. > >>> > >>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in > >>> identify_cpu(), because SS detection uses boot_cpu_data. > >> > >> Doesn't this, mean ... > > > > Well, that's the reason for the rant here. The reset at the top of > > identify_cpu() has been there since 2005. It's arguably to make sure > > the BSP and the APs have the same empty state in the passed > > cpuinfo_x86 struct, as for the BSP this would be already partially > > initialized due to what's done in early_cpu_init(). > > > > The underlying question is whether we would rather prefer to not do > > the reset for the BSP, but that would lead to differences in the > > contents of cpuinfo_x86 struct between the BSP and the APs. In the > > past we have arranged for leaves needed early to be populated in > > generic_identify(), like FEATURESET_e21a, hence the proposed patch > > does that for FEATURESET_1d. > > > >>> However that > >>> creates an imbalance on the state of the BSP versus the APs in the > >>> identify_cpu() code. > >>> > >>> I've opted for the less controversial solution of populating FEATURESET_1d > >>> in generic_identify(), as the value is already there. The same is done for > >>> the AMD faulting probe code. > >>> > >>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") > >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > >> > >> ... this Fixes tag is incorrect? > > > > I think the Fixes tag is accurate; the code was OK before that change. > > Nothing in c_early_init hooks depended on (some of) the x86_capability > > fields being populated, which is required after the change. > > I agree. Hence: > Reviewed-by: Jan Beulich <jbeulich@suse.com> > > I wonder though whether while there we wouldn't want to also store ecx if > we already have it. (Really there is the question of whether we haven't > other cpu_has_* uses which similarly come "too early".) Yeah, I was about to do it, but it's not strictly needed for c_early_init, and it's done anyway just after the call to c_early_init. I can set that field also, but then I would need to tweak the comment ahead, something like: /* * Early init of Self Snoop support requires 0x1.edx, while * there also set 0x1.ecx as the value is already in context. */ c->x86_capability[FEATURESET_1d] = edx; c->x86_capability[FEATURESET_1c] = ecx; Thanks, Roger. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 7:34 ` Roger Pau Monné @ 2025-09-25 7:37 ` Jan Beulich 2025-09-25 7:40 ` Roger Pau Monné 0 siblings, 1 reply; 10+ messages in thread From: Jan Beulich @ 2025-09-25 7:37 UTC (permalink / raw) To: Roger Pau Monné Cc: xen-devel@lists.xenproject.org, oleksii.kurochko@gmail.com, Andrew Cooper On 25.09.2025 09:34, Roger Pau Monné wrote: > On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: >> On 24.09.2025 15:40, Roger Pau Monné wrote: >>> On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: >>>> On 24/09/2025 4:00 am, Roger Pau Monne wrote: >>>>> Otherwise the check for the SS feature in >>>>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to >>>>> X86_FEATURE_XEN_SELFSNOOP never being set. >>>>> >>>>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in >>>>> identify_cpu(), because SS detection uses boot_cpu_data. >>>> >>>> Doesn't this, mean ... >>> >>> Well, that's the reason for the rant here. The reset at the top of >>> identify_cpu() has been there since 2005. It's arguably to make sure >>> the BSP and the APs have the same empty state in the passed >>> cpuinfo_x86 struct, as for the BSP this would be already partially >>> initialized due to what's done in early_cpu_init(). >>> >>> The underlying question is whether we would rather prefer to not do >>> the reset for the BSP, but that would lead to differences in the >>> contents of cpuinfo_x86 struct between the BSP and the APs. In the >>> past we have arranged for leaves needed early to be populated in >>> generic_identify(), like FEATURESET_e21a, hence the proposed patch >>> does that for FEATURESET_1d. >>> >>>>> However that >>>>> creates an imbalance on the state of the BSP versus the APs in the >>>>> identify_cpu() code. >>>>> >>>>> I've opted for the less controversial solution of populating FEATURESET_1d >>>>> in generic_identify(), as the value is already there. The same is done for >>>>> the AMD faulting probe code. >>>>> >>>>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") >>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >>>> >>>> ... this Fixes tag is incorrect? >>> >>> I think the Fixes tag is accurate; the code was OK before that change. >>> Nothing in c_early_init hooks depended on (some of) the x86_capability >>> fields being populated, which is required after the change. >> >> I agree. Hence: >> Reviewed-by: Jan Beulich <jbeulich@suse.com> >> >> I wonder though whether while there we wouldn't want to also store ecx if >> we already have it. (Really there is the question of whether we haven't >> other cpu_has_* uses which similarly come "too early".) > > Yeah, I was about to do it, but it's not strictly needed for > c_early_init, and it's done anyway just after the call to > c_early_init. I can set that field also, but then I would need to > tweak the comment ahead, something like: Sure, i.e. fine with me. Jan > /* > * Early init of Self Snoop support requires 0x1.edx, while > * there also set 0x1.ecx as the value is already in context. > */ > c->x86_capability[FEATURESET_1d] = edx; > c->x86_capability[FEATURESET_1c] = ecx; > > Thanks, Roger. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 7:37 ` Jan Beulich @ 2025-09-25 7:40 ` Roger Pau Monné 2025-09-25 7:41 ` Jan Beulich 0 siblings, 1 reply; 10+ messages in thread From: Roger Pau Monné @ 2025-09-25 7:40 UTC (permalink / raw) To: Jan Beulich, oleksii.kurochko Cc: xen-devel@lists.xenproject.org, Andrew Cooper On Thu, Sep 25, 2025 at 09:37:46AM +0200, Jan Beulich wrote: > On 25.09.2025 09:34, Roger Pau Monné wrote: > > On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: > >> On 24.09.2025 15:40, Roger Pau Monné wrote: > >>> On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: > >>>> On 24/09/2025 4:00 am, Roger Pau Monne wrote: > >>>>> Otherwise the check for the SS feature in > >>>>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to > >>>>> X86_FEATURE_XEN_SELFSNOOP never being set. > >>>>> > >>>>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in > >>>>> identify_cpu(), because SS detection uses boot_cpu_data. > >>>> > >>>> Doesn't this, mean ... > >>> > >>> Well, that's the reason for the rant here. The reset at the top of > >>> identify_cpu() has been there since 2005. It's arguably to make sure > >>> the BSP and the APs have the same empty state in the passed > >>> cpuinfo_x86 struct, as for the BSP this would be already partially > >>> initialized due to what's done in early_cpu_init(). > >>> > >>> The underlying question is whether we would rather prefer to not do > >>> the reset for the BSP, but that would lead to differences in the > >>> contents of cpuinfo_x86 struct between the BSP and the APs. In the > >>> past we have arranged for leaves needed early to be populated in > >>> generic_identify(), like FEATURESET_e21a, hence the proposed patch > >>> does that for FEATURESET_1d. > >>> > >>>>> However that > >>>>> creates an imbalance on the state of the BSP versus the APs in the > >>>>> identify_cpu() code. > >>>>> > >>>>> I've opted for the less controversial solution of populating FEATURESET_1d > >>>>> in generic_identify(), as the value is already there. The same is done for > >>>>> the AMD faulting probe code. > >>>>> > >>>>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") > >>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > >>>> > >>>> ... this Fixes tag is incorrect? > >>> > >>> I think the Fixes tag is accurate; the code was OK before that change. > >>> Nothing in c_early_init hooks depended on (some of) the x86_capability > >>> fields being populated, which is required after the change. > >> > >> I agree. Hence: > >> Reviewed-by: Jan Beulich <jbeulich@suse.com> > >> > >> I wonder though whether while there we wouldn't want to also store ecx if > >> we already have it. (Really there is the question of whether we haven't > >> other cpu_has_* uses which similarly come "too early".) > > > > Yeah, I was about to do it, but it's not strictly needed for > > c_early_init, and it's done anyway just after the call to > > c_early_init. I can set that field also, but then I would need to > > tweak the comment ahead, something like: > > Sure, i.e. fine with me. Thanks! Oleksii, can I please get a release-ack for this to go in? Regards, Roger. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 7:40 ` Roger Pau Monné @ 2025-09-25 7:41 ` Jan Beulich 2025-09-25 8:11 ` Roger Pau Monné 0 siblings, 1 reply; 10+ messages in thread From: Jan Beulich @ 2025-09-25 7:41 UTC (permalink / raw) To: Roger Pau Monné Cc: xen-devel@lists.xenproject.org, Andrew Cooper, oleksii.kurochko On 25.09.2025 09:40, Roger Pau Monné wrote: > On Thu, Sep 25, 2025 at 09:37:46AM +0200, Jan Beulich wrote: >> On 25.09.2025 09:34, Roger Pau Monné wrote: >>> On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: >>>> On 24.09.2025 15:40, Roger Pau Monné wrote: >>>>> On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: >>>>>> On 24/09/2025 4:00 am, Roger Pau Monne wrote: >>>>>>> Otherwise the check for the SS feature in >>>>>>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to >>>>>>> X86_FEATURE_XEN_SELFSNOOP never being set. >>>>>>> >>>>>>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in >>>>>>> identify_cpu(), because SS detection uses boot_cpu_data. >>>>>> >>>>>> Doesn't this, mean ... >>>>> >>>>> Well, that's the reason for the rant here. The reset at the top of >>>>> identify_cpu() has been there since 2005. It's arguably to make sure >>>>> the BSP and the APs have the same empty state in the passed >>>>> cpuinfo_x86 struct, as for the BSP this would be already partially >>>>> initialized due to what's done in early_cpu_init(). >>>>> >>>>> The underlying question is whether we would rather prefer to not do >>>>> the reset for the BSP, but that would lead to differences in the >>>>> contents of cpuinfo_x86 struct between the BSP and the APs. In the >>>>> past we have arranged for leaves needed early to be populated in >>>>> generic_identify(), like FEATURESET_e21a, hence the proposed patch >>>>> does that for FEATURESET_1d. >>>>> >>>>>>> However that >>>>>>> creates an imbalance on the state of the BSP versus the APs in the >>>>>>> identify_cpu() code. >>>>>>> >>>>>>> I've opted for the less controversial solution of populating FEATURESET_1d >>>>>>> in generic_identify(), as the value is already there. The same is done for >>>>>>> the AMD faulting probe code. >>>>>>> >>>>>>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") >>>>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >>>>>> >>>>>> ... this Fixes tag is incorrect? >>>>> >>>>> I think the Fixes tag is accurate; the code was OK before that change. >>>>> Nothing in c_early_init hooks depended on (some of) the x86_capability >>>>> fields being populated, which is required after the change. >>>> >>>> I agree. Hence: >>>> Reviewed-by: Jan Beulich <jbeulich@suse.com> >>>> >>>> I wonder though whether while there we wouldn't want to also store ecx if >>>> we already have it. (Really there is the question of whether we haven't >>>> other cpu_has_* uses which similarly come "too early".) >>> >>> Yeah, I was about to do it, but it's not strictly needed for >>> c_early_init, and it's done anyway just after the call to >>> c_early_init. I can set that field also, but then I would need to >>> tweak the comment ahead, something like: >> >> Sure, i.e. fine with me. > > Oleksii, can I please get a release-ack for this to go in? Do bug fixes actually need release-acks just yet? Jan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 7:41 ` Jan Beulich @ 2025-09-25 8:11 ` Roger Pau Monné 2025-09-25 20:43 ` Oleksii Kurochko 0 siblings, 1 reply; 10+ messages in thread From: Roger Pau Monné @ 2025-09-25 8:11 UTC (permalink / raw) To: Jan Beulich Cc: xen-devel@lists.xenproject.org, Andrew Cooper, oleksii.kurochko On Thu, Sep 25, 2025 at 09:41:43AM +0200, Jan Beulich wrote: > On 25.09.2025 09:40, Roger Pau Monné wrote: > > On Thu, Sep 25, 2025 at 09:37:46AM +0200, Jan Beulich wrote: > >> On 25.09.2025 09:34, Roger Pau Monné wrote: > >>> On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: > >>>> On 24.09.2025 15:40, Roger Pau Monné wrote: > >>>>> On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: > >>>>>> On 24/09/2025 4:00 am, Roger Pau Monne wrote: > >>>>>>> Otherwise the check for the SS feature in > >>>>>>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to > >>>>>>> X86_FEATURE_XEN_SELFSNOOP never being set. > >>>>>>> > >>>>>>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in > >>>>>>> identify_cpu(), because SS detection uses boot_cpu_data. > >>>>>> > >>>>>> Doesn't this, mean ... > >>>>> > >>>>> Well, that's the reason for the rant here. The reset at the top of > >>>>> identify_cpu() has been there since 2005. It's arguably to make sure > >>>>> the BSP and the APs have the same empty state in the passed > >>>>> cpuinfo_x86 struct, as for the BSP this would be already partially > >>>>> initialized due to what's done in early_cpu_init(). > >>>>> > >>>>> The underlying question is whether we would rather prefer to not do > >>>>> the reset for the BSP, but that would lead to differences in the > >>>>> contents of cpuinfo_x86 struct between the BSP and the APs. In the > >>>>> past we have arranged for leaves needed early to be populated in > >>>>> generic_identify(), like FEATURESET_e21a, hence the proposed patch > >>>>> does that for FEATURESET_1d. > >>>>> > >>>>>>> However that > >>>>>>> creates an imbalance on the state of the BSP versus the APs in the > >>>>>>> identify_cpu() code. > >>>>>>> > >>>>>>> I've opted for the less controversial solution of populating FEATURESET_1d > >>>>>>> in generic_identify(), as the value is already there. The same is done for > >>>>>>> the AMD faulting probe code. > >>>>>>> > >>>>>>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") > >>>>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > >>>>>> > >>>>>> ... this Fixes tag is incorrect? > >>>>> > >>>>> I think the Fixes tag is accurate; the code was OK before that change. > >>>>> Nothing in c_early_init hooks depended on (some of) the x86_capability > >>>>> fields being populated, which is required after the change. > >>>> > >>>> I agree. Hence: > >>>> Reviewed-by: Jan Beulich <jbeulich@suse.com> > >>>> > >>>> I wonder though whether while there we wouldn't want to also store ecx if > >>>> we already have it. (Really there is the question of whether we haven't > >>>> other cpu_has_* uses which similarly come "too early".) > >>> > >>> Yeah, I was about to do it, but it's not strictly needed for > >>> c_early_init, and it's done anyway just after the call to > >>> c_early_init. I can set that field also, but then I would need to > >>> tweak the comment ahead, something like: > >> > >> Sure, i.e. fine with me. > > > > Oleksii, can I please get a release-ack for this to go in? > > Do bug fixes actually need release-acks just yet? I always err on the side of caution and ask for them. Maybe Oleksii can state if/when he formally wants release-acks for bugfixes. Regards, Roger. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection 2025-09-25 8:11 ` Roger Pau Monné @ 2025-09-25 20:43 ` Oleksii Kurochko 0 siblings, 0 replies; 10+ messages in thread From: Oleksii Kurochko @ 2025-09-25 20:43 UTC (permalink / raw) To: Roger Pau Monné, Jan Beulich Cc: xen-devel@lists.xenproject.org, Andrew Cooper [-- Attachment #1: Type: text/plain, Size: 3543 bytes --] On 9/25/25 10:11 AM, Roger Pau Monné wrote: > On Thu, Sep 25, 2025 at 09:41:43AM +0200, Jan Beulich wrote: >> On 25.09.2025 09:40, Roger Pau Monné wrote: >>> On Thu, Sep 25, 2025 at 09:37:46AM +0200, Jan Beulich wrote: >>>> On 25.09.2025 09:34, Roger Pau Monné wrote: >>>>> On Thu, Sep 25, 2025 at 09:03:06AM +0200, Jan Beulich wrote: >>>>>> On 24.09.2025 15:40, Roger Pau Monné wrote: >>>>>>> On Wed, Sep 24, 2025 at 11:50:02AM +0000, Andrew Cooper wrote: >>>>>>>> On 24/09/2025 4:00 am, Roger Pau Monne wrote: >>>>>>>>> Otherwise the check for the SS feature in >>>>>>>>> check_memory_type_self_snoop_errata() fails unconditionally, which leads to >>>>>>>>> X86_FEATURE_XEN_SELFSNOOP never being set. >>>>>>>>> >>>>>>>>> We could also avoid this by not doing the reset_cpuinfo() for the BSP in >>>>>>>>> identify_cpu(), because SS detection uses boot_cpu_data. >>>>>>>> Doesn't this, mean ... >>>>>>> Well, that's the reason for the rant here. The reset at the top of >>>>>>> identify_cpu() has been there since 2005. It's arguably to make sure >>>>>>> the BSP and the APs have the same empty state in the passed >>>>>>> cpuinfo_x86 struct, as for the BSP this would be already partially >>>>>>> initialized due to what's done in early_cpu_init(). >>>>>>> >>>>>>> The underlying question is whether we would rather prefer to not do >>>>>>> the reset for the BSP, but that would lead to differences in the >>>>>>> contents of cpuinfo_x86 struct between the BSP and the APs. In the >>>>>>> past we have arranged for leaves needed early to be populated in >>>>>>> generic_identify(), like FEATURESET_e21a, hence the proposed patch >>>>>>> does that for FEATURESET_1d. >>>>>>> >>>>>>>>> However that >>>>>>>>> creates an imbalance on the state of the BSP versus the APs in the >>>>>>>>> identify_cpu() code. >>>>>>>>> >>>>>>>>> I've opted for the less controversial solution of populating FEATURESET_1d >>>>>>>>> in generic_identify(), as the value is already there. The same is done for >>>>>>>>> the AMD faulting probe code. >>>>>>>>> >>>>>>>>> Fixes: f2663ca2e520 ("x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata") >>>>>>>>> Signed-off-by: Roger Pau Monné<roger.pau@citrix.com> >>>>>>>> ... this Fixes tag is incorrect? >>>>>>> I think the Fixes tag is accurate; the code was OK before that change. >>>>>>> Nothing in c_early_init hooks depended on (some of) the x86_capability >>>>>>> fields being populated, which is required after the change. >>>>>> I agree. Hence: >>>>>> Reviewed-by: Jan Beulich<jbeulich@suse.com> >>>>>> >>>>>> I wonder though whether while there we wouldn't want to also store ecx if >>>>>> we already have it. (Really there is the question of whether we haven't >>>>>> other cpu_has_* uses which similarly come "too early".) >>>>> Yeah, I was about to do it, but it's not strictly needed for >>>>> c_early_init, and it's done anyway just after the call to >>>>> c_early_init. I can set that field also, but then I would need to >>>>> tweak the comment ahead, something like: >>>> Sure, i.e. fine with me. >>> Oleksii, can I please get a release-ack for this to go in? >> Do bug fixes actually need release-acks just yet? > I always err on the side of caution and ask for them. Maybe Oleksii > can state if/when he formally wants release-acks for bugfixes. I am okay not to have release-acks for bugfixes until the end of code freeze. When I will announce a next stages of release process, I would put such the information explicitly. Thanks. ~ Oleksii > Regards, Roger. [-- Attachment #2: Type: text/html, Size: 5528 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-09-25 20:43 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-24 11:00 [PATCH for-4.21] x86/cpu: populate CPUID 0x1.edx features early for self-snoop detection Roger Pau Monne
2025-09-24 11:50 ` Andrew Cooper
[not found] ` <2d17d2d502df489f97b51e43a2d86535@DM6PR03MB5227.namprd03.prod.outlook.com>
2025-09-24 13:40 ` Roger Pau Monné
2025-09-25 7:03 ` Jan Beulich
2025-09-25 7:34 ` Roger Pau Monné
2025-09-25 7:37 ` Jan Beulich
2025-09-25 7:40 ` Roger Pau Monné
2025-09-25 7:41 ` Jan Beulich
2025-09-25 8:11 ` Roger Pau Monné
2025-09-25 20:43 ` Oleksii Kurochko
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.