From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Wei Liu" <wl@xen.org>, "Roger Pau Monné" <roger.pau@citrix.com>
Subject: [Xen-devel] [PATCH] x86/apic: Improve current_local_apic_mode()
Date: Tue, 28 Jan 2020 12:52:16 +0000 [thread overview]
Message-ID: <20200128125216.709-1-andrew.cooper3@citrix.com> (raw)
boot_cpu_has(X86_FEATURE_X2APIC) doesn't need checking to interpret
APIC_BASE_EXTD.
Also take the opportunity to optimise the generated assembly by not using
rdmsrl(). GCC isn't clever enough to spot that it can drop the shift and or
to put %eax in the higher half of msr_contents.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
What can I say - the numpty who wrote that code was young and naive...
---
xen/arch/x86/apic.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index a6a7754d77..0684c5d9c2 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1534,18 +1534,14 @@ void __init record_boot_APIC_mode(void)
/* Look at the bits in MSR_APIC_BASE and work out which APIC mode we are in */
enum apic_mode current_local_apic_mode(void)
{
- u64 msr_contents;
+ uint32_t high, low;
- rdmsrl(MSR_APIC_BASE, msr_contents);
+ rdmsr(MSR_APIC_BASE, low, high);
- /* Reading EXTD bit from the MSR is only valid if CPUID
- * says so, else reserved */
- if ( boot_cpu_has(X86_FEATURE_X2APIC) && (msr_contents & APIC_BASE_EXTD) )
+ if ( low & APIC_BASE_EXTD )
return APIC_MODE_X2APIC;
- /* EN bit should always be valid as long as we can read the MSR
- */
- if ( msr_contents & APIC_BASE_ENABLE )
+ if ( low & APIC_BASE_ENABLE )
return APIC_MODE_XAPIC;
return APIC_MODE_DISABLED;
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next reply other threads:[~2020-01-28 12:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-28 12:52 Andrew Cooper [this message]
2020-01-28 13:51 ` [Xen-devel] [PATCH] x86/apic: Improve current_local_apic_mode() Wei Liu
2020-01-28 14:10 ` Jan Beulich
2020-02-14 17:59 ` Andrew Cooper
2020-02-18 13:45 ` 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=20200128125216.709-1-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=roger.pau@citrix.com \
--cc=wl@xen.org \
--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.