mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
x86/bus_lock: Add support for AMD
Add Bus Lock Detect (called Bus Lock Trap in AMD docs) support for AMD platforms. Bus Lock Detect is enumerated with CPUID Fn0000_0007_ECX_x0 bit [24 / BUSLOCKTRAP]. It can be enabled through MSR_IA32_DEBUGCTLMSR. When enabled, hardware clears DR6[11] and raises a #DB exception on occurrence of Bus Lock if CPL > 0. More detail about the feature can be found in AMD APM[1]. [1]: AMD64 Architecture Programmer's Manual Pub. 40332, Rev. 4.07 - June 2023, Vol 2, 13.1.3.6 Bus Lock Trap https://bugzilla.kernel.org/attachment.cgi?id=304653 Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Link: https://lore.kernel.org/all/20240808062937.1149-3-ravi.bangoria@amd.com
This commit is contained in:
parent
350afa8a11
commit
408eb7417a
@ -26,7 +26,8 @@ Detection
|
||||
=========
|
||||
|
||||
Intel processors may support either or both of the following hardware
|
||||
mechanisms to detect split locks and bus locks.
|
||||
mechanisms to detect split locks and bus locks. Some AMD processors also
|
||||
support bus lock detect.
|
||||
|
||||
#AC exception for split lock detection
|
||||
--------------------------------------
|
||||
|
@ -2428,7 +2428,7 @@ source "kernel/livepatch/Kconfig"
|
||||
|
||||
config X86_BUS_LOCK_DETECT
|
||||
bool "Split Lock Detect and Bus Lock Detect support"
|
||||
depends on CPU_SUP_INTEL
|
||||
depends on CPU_SUP_INTEL || CPU_SUP_AMD
|
||||
default y
|
||||
help
|
||||
Enable Split Lock Detect and Bus Lock Detect functionalities.
|
||||
|
@ -1832,6 +1832,8 @@ static void identify_cpu(struct cpuinfo_x86 *c)
|
||||
if (this_cpu->c_init)
|
||||
this_cpu->c_init(c);
|
||||
|
||||
bus_lock_init();
|
||||
|
||||
/* Disable the PN if appropriate */
|
||||
squash_the_stupid_serial_number(c);
|
||||
|
||||
|
@ -610,7 +610,6 @@ static void init_intel(struct cpuinfo_x86 *c)
|
||||
init_intel_misc_features(c);
|
||||
|
||||
split_lock_init();
|
||||
bus_lock_init();
|
||||
|
||||
intel_init_thermal(c);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user