From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "Roger Pau Monné" <roger.pau@citrix.com>,
Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] RFC x86/msr: Use WRMSRNS $imm when available
Date: Mon, 11 Aug 2025 11:16:28 +0100 [thread overview]
Message-ID: <a8cf2ecc-ec39-4e6e-8279-e49cdd2c6d38@citrix.com> (raw)
In-Reply-To: <d6b13991-e158-4232-8850-44c0b027edbb@suse.com>
On 11/08/2025 11:06 am, Jan Beulich wrote:
> On 11.08.2025 11:50, Andrew Cooper wrote:
>> On 11/08/2025 9:16 am, Jan Beulich wrote:
>>> On 09.08.2025 00:20, Andrew Cooper wrote:
>>>> + "mov %%rax, %%rdx\n\t"
>>>> + "shr $32, %%rdx\n\t"
>>>> + ".byte 0x0f,0x01,0xc6", X86_FEATURE_WRMSRNS,
>>>> +
>>>> + [msr] "i" (msr), "a" (val) : "rcx", "rdx");
>>> [msr] "i" (msr), "a" (val), "c" (msr) : "rdx");
>>>
>>> allowing the compiler to actually know what's put in %ecx? That'll make
>>> original and 2nd replacement code 10 bytes, better balancing with the 9
>>> bytes of the 1st replacement. And I'd guess that the potentially dead
>>> MOV to %ecx would be hidden in the noise as well.
>> I considered that, but what can the compiler do as a result of knowing %ecx?
> For example ...
>
>> That said, we do need an RDMSR form (which I desperately want to make
>> foo = rdmsr(MSR_BAR) but my cleanup series from 2019 got nowhere), and
>> in a read+write case I suppose the compiler could deduplicate the setup
>> of %ecx.
> ... this. But also simply to use a good pattern (exposing as much as possible
> to the compiler), so there are more good instances of code for future cloning
> from. (In size-optimizing builds, the compiler could further favor ADD/SUB
> over MOV when the two MSRs accessed are relatively close together.)
I have seen the compiler do this in the past, but couldn't reproduce it
for this work.
We specifically do not want any conversion to ADD/SUB, because that
takes our "close to a nop" and makes it no so.
~Andrew
next prev parent reply other threads:[~2025-08-11 10:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-08 22:20 [PATCH] RFC x86/msr: Use WRMSRNS $imm when available Andrew Cooper
2025-08-11 8:16 ` Jan Beulich
2025-08-11 9:50 ` Andrew Cooper
2025-08-11 10:06 ` Jan Beulich
2025-08-11 10:16 ` Andrew Cooper [this message]
2025-08-11 10:31 ` 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=a8cf2ecc-ec39-4e6e-8279-e49cdd2c6d38@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--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.