mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
The boot_{rdmsr,wrmsr}() helpers are *just* the barebones MSR access
functionality, without any tracing or exception handling glue as it is done in
kernel proper.
Move these helpers to asm/shared/msr.h and rename to raw_{rdmsr,wrmsr}() to
indicate what they are.
[ bp: Correct the reason why those helpers exist. I should've caught that in
the original patch that added them:
176db62257 ("x86/boot: Introduce helpers for MSR reads/writes"
but oh well...
- fixup include path delimiters to <> ]
Signed-off-by: John Allen <john.allen@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://patch.msgid.link/all/20250924200852.4452-2-john.allen@amd.com
31 lines
680 B
C
31 lines
680 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_X86_SHARED_MSR_H
|
|
#define _ASM_X86_SHARED_MSR_H
|
|
|
|
struct msr {
|
|
union {
|
|
struct {
|
|
u32 l;
|
|
u32 h;
|
|
};
|
|
u64 q;
|
|
};
|
|
};
|
|
|
|
/*
|
|
* The kernel proper already defines rdmsr()/wrmsr(), but they are not for the
|
|
* boot kernel since they rely on tracepoint/exception handling infrastructure
|
|
* that's not available here.
|
|
*/
|
|
static inline void raw_rdmsr(unsigned int reg, struct msr *m)
|
|
{
|
|
asm volatile("rdmsr" : "=a" (m->l), "=d" (m->h) : "c" (reg));
|
|
}
|
|
|
|
static inline void raw_wrmsr(unsigned int reg, const struct msr *m)
|
|
{
|
|
asm volatile("wrmsr" : : "c" (reg), "a"(m->l), "d" (m->h) : "memory");
|
|
}
|
|
|
|
#endif /* _ASM_X86_SHARED_MSR_H */
|