From: Jason Andryuk <jason.andryuk@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: Yazen Ghannam <yazen.ghannam@amd.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
Mario Limonciello <mario.limonciello@amd.com>,
"Thomas Gleixner" <tglx@kernel.org>, <x86@kernel.org>,
<linux-kernel@vger.kernel.org>, Penny Zheng <penny.zheng@amd.com>,
<stable@vger.kernel.org>
Subject: Re: [PATCH 1/2] x86/amd_node: Remove smn_exclusive
Date: Fri, 14 Aug 2026 09:37:45 -0400 [thread overview]
Message-ID: <95307ce5-e209-4df9-aba4-5fcb668533c0@amd.com> (raw)
In-Reply-To: <20260813235800.GAan5aCCfimjHRUV1O@fat_crate.local>
On 2026-08-13 19:58, Borislav Petkov wrote:
> On Thu, Aug 13, 2026 at 09:40:33AM -0400, Jason Andryuk wrote:
>> On 2026-08-12 15:28, Borislav Petkov wrote:
>>> On Mon, Aug 10, 2026 at 10:07:47AM -0400, Yazen Ghannam wrote:
>>>> 'smn_exclusive' wasn't originally intended to be used for bounds
>>>> checking the array. But the original use is no longer needed, so it can
>>>> be removed.
>>>
>>> Why is it no longer needed? Apparently I didn't get that memo yet...
>>>
>>> 83518453074d ("x86/amd_node: Add SMN offsets to exclusive region access") is
>>> talking about the potential concurrent access. Why is that ok now all of
>>> a sudden?
>> 83518453074d set smn_exclusive after successfully calling
>> pci_request_config_region_exclusive(). smn_exclusive gated access in
>> __amd_smn_rw().
>>
>> Things moved around, and now pci_request_config_region_exclusive() is called
>> earlier. At the end of amd_smn_init(), either amd_roots == NULL and
>> smn_exclusive == false or amd_roots != NULL and smn_exclusive == true.
>> smn_exclusive is redundant, and amd_roots can just be used directly.
>
> So you want to use amd_roots to *also* *denote* whether exclusive SMN access
> is enabled. Then you need to at least put a comment in __amd_smn_rw() where
> you're testing it, what exactly that test means.
I'm not sure adding a comment is helpful. smn_exclusive lost its
usefulness between its introduction and now.
> Then, your patch has a Fixes: tag and CC:stable which means, it needs to go to
> all kernels but then I don't know what you're fixing.
In my original commit message I stated this removes a potential NULL deref:
"""
amd_smn_read/write() are exported functions around __amd_smn_rw(), so
they are always available even if amd_smn_init() fails. smn_exclusive
would prevent access __amd_smn_rw(), but it is placed too late. If
amd_smn_init() failed, amd_roots is NULL and __amd_smn_rw() will fault
over it. Replace smn_exclusive with directly checking amd_roots to
avoid the NULL pointer deref - writeerence.
"""
I will add something about how smn_exclusive became redundant.
> Looking at it more, you're basically fixing one more aspect of running the
> kernel as a Xen guest and it not having AMD roots exported.
If amd_smn_init() fails for any reason, __amd_smn_rw() will fault. It
was seen with Xen, but it is not a property of running on Xen.
> But what you really wanna do, IMNSVHO, you want to make your patch 2 be patch
> 1 and it can go to stable.
>
> Your patch 1 then becomes a simplification/cleanup patch which goes as patch
> 2 and doesn't need to be Cc:stable but it can be queued later, during the
> normal cycle.
Re-ordering is fine. With the divide by zero fix, then amd_smn_init()
succeeds in my test with Xen. So the other patch isn't needed in that
case, but it looked like a worthwhile fix. In the cover letter, I noted
accesses from amd_pmf_probe(), amd_pmc_probe(), and
acp_acp70_audio_probe() to __amd_smn_rw() on my test system. These are
called even if amd_smn_init() fails.
Regards,
Jason
next prev parent reply other threads:[~2026-08-14 13:37 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 16:01 [PATCH 0/2] x86/amd_node: Fixes for virtualized systems Jason Andryuk
2026-08-06 16:01 ` [PATCH 1/2] x86/amd_node: Remove smn_exclusive Jason Andryuk
2026-08-10 14:07 ` Yazen Ghannam
2026-08-11 14:19 ` Mario Limonciello
2026-08-12 19:28 ` Borislav Petkov
2026-08-13 13:40 ` Jason Andryuk
2026-08-13 23:58 ` Borislav Petkov
2026-08-14 13:37 ` Jason Andryuk [this message]
2026-08-14 18:18 ` Borislav Petkov
2026-08-06 16:01 ` [PATCH 2/2] x86/amd_node: Avoid divide by zero on virtualized systems Jason Andryuk
2026-08-10 14:47 ` Yazen Ghannam
2026-08-10 20:16 ` Jason Andryuk
2026-08-11 8:21 ` David Laight
2026-08-11 21:23 ` Jason Andryuk
2026-08-12 7:11 ` David Laight
2026-08-12 19:31 ` Borislav Petkov
2026-08-13 15:56 ` Yazen Ghannam
2026-08-13 17:23 ` Borislav Petkov
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=95307ce5-e209-4df9-aba4-5fcb668533c0@amd.com \
--to=jason.andryuk@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mario.limonciello@amd.com \
--cc=mingo@redhat.com \
--cc=penny.zheng@amd.com \
--cc=stable@vger.kernel.org \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
--cc=yazen.ghannam@amd.com \
/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.