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
|
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
|
#AC exception for split lock detection
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
@ -2428,7 +2428,7 @@ source "kernel/livepatch/Kconfig"
|
|||||||
|
|
||||||
config X86_BUS_LOCK_DETECT
|
config X86_BUS_LOCK_DETECT
|
||||||
bool "Split Lock Detect and Bus Lock Detect support"
|
bool "Split Lock Detect and Bus Lock Detect support"
|
||||||
depends on CPU_SUP_INTEL
|
depends on CPU_SUP_INTEL || CPU_SUP_AMD
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Enable Split Lock Detect and Bus Lock Detect functionalities.
|
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)
|
if (this_cpu->c_init)
|
||||||
this_cpu->c_init(c);
|
this_cpu->c_init(c);
|
||||||
|
|
||||||
|
bus_lock_init();
|
||||||
|
|
||||||
/* Disable the PN if appropriate */
|
/* Disable the PN if appropriate */
|
||||||
squash_the_stupid_serial_number(c);
|
squash_the_stupid_serial_number(c);
|
||||||
|
|
||||||
|
@ -610,7 +610,6 @@ static void init_intel(struct cpuinfo_x86 *c)
|
|||||||
init_intel_misc_features(c);
|
init_intel_misc_features(c);
|
||||||
|
|
||||||
split_lock_init();
|
split_lock_init();
|
||||||
bus_lock_init();
|
|
||||||
|
|
||||||
intel_init_thermal(c);
|
intel_init_thermal(c);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user