From: Ravi Bangoria <ravi.bangoria@amd.com>
To: <tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
<dave.hansen@linux.intel.com>, <seanjc@google.com>,
<pbonzini@redhat.com>, <thomas.lendacky@amd.com>
Cc: <ravi.bangoria@amd.com>, <hpa@zytor.com>,
<rmk+kernel@armlinux.org.uk>, <peterz@infradead.org>,
<james.morse@arm.com>, <lukas.bulwahn@gmail.com>,
<arjan@linux.intel.com>, <j.granados@samsung.com>,
<sibs@chinatelecom.cn>, <nik.borisov@suse.com>,
<michael.roth@amd.com>, <nikunj.dadhania@amd.com>,
<babu.moger@amd.com>, <x86@kernel.org>, <kvm@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <santosh.shukla@amd.com>,
<ananth.narayan@amd.com>, <sandipan.das@amd.com>,
<manali.shukla@amd.com>, <jmattson@google.com>
Subject: [PATCH v2 0/4] x86/cpu: Add Bus Lock Detect support for AMD
Date: Fri, 12 Jul 2024 09:39:39 +0000 [thread overview]
Message-ID: <20240712093943.1288-1-ravi.bangoria@amd.com> (raw)
Upcoming AMD uarch will support Bus Lock Detect (called Bus Lock Trap
in AMD docs). Add support for the same in Linux. Bus Lock Detect is
enumerated with cpuid 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].
Patches are prepared on tip/master (a6fffa92da54).
[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
v1: https://lore.kernel.org/r/20240429060643.211-1-ravi.bangoria@amd.com
v1->v2:
- Call bus_lock_init() from common.c. Although common.c is shared across
all X86_VENDOR_*, bus_lock_init() internally checks for
X86_FEATURE_BUS_LOCK_DETECT, hence it's safe to call it from common.c.
- s/split-bus-lock.c/bus_lock.c/ for a new filename.
- Add a KVM patch to disable Bus Lock Trap unconditionally when SVM
support is missing.
Note:
A Qemu fix is also require to handle corner case where a hardware
instruction or data breakpoint is created by Qemu remote debugger (gdb)
on the same instruction which also causes a Bus Lock. I'll post a Qemu
patch separately.
Ravi Bangoria (4):
x86/split_lock: Move Split and Bus lock code to a dedicated file
x86/bus_lock: Add support for AMD
KVM: SVM: Don't advertise Bus Lock Detect to guest if SVM support is
missing
KVM: SVM: Add Bus Lock Detect support
arch/x86/include/asm/cpu.h | 4 +
arch/x86/kernel/cpu/Makefile | 1 +
arch/x86/kernel/cpu/bus_lock.c | 406 ++++++++++++++++++++++++++++++++
arch/x86/kernel/cpu/common.c | 2 +
arch/x86/kernel/cpu/intel.c | 407 ---------------------------------
arch/x86/kvm/svm/nested.c | 3 +-
arch/x86/kvm/svm/svm.c | 16 +-
7 files changed, 430 insertions(+), 409 deletions(-)
create mode 100644 arch/x86/kernel/cpu/bus_lock.c
--
2.34.1
next reply other threads:[~2024-07-12 9:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-12 9:39 Ravi Bangoria [this message]
2024-07-12 9:39 ` [PATCH v2 1/4] x86/split_lock: Move Split and Bus lock code to a dedicated file Ravi Bangoria
2024-07-13 10:33 ` kernel test robot
2024-07-13 12:41 ` kernel test robot
2024-07-12 9:39 ` [PATCH v2 2/4] x86/bus_lock: Add support for AMD Ravi Bangoria
2024-07-12 9:39 ` [PATCH v2 3/4] KVM: SVM: Don't advertise Bus Lock Detect to guest if SVM support is missing Ravi Bangoria
2024-07-12 23:33 ` Jim Mattson
2024-07-12 9:39 ` [PATCH v2 4/4] KVM: SVM: Add Bus Lock Detect support Ravi Bangoria
2024-07-15 15:11 ` [PATCH v2 0/4] x86/cpu: Add Bus Lock Detect support for AMD Tom Lendacky
2024-07-15 15:18 ` Ravi Bangoria
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=20240712093943.1288-1-ravi.bangoria@amd.com \
--to=ravi.bangoria@amd.com \
--cc=ananth.narayan@amd.com \
--cc=arjan@linux.intel.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=j.granados@samsung.com \
--cc=james.morse@arm.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas.bulwahn@gmail.com \
--cc=manali.shukla@amd.com \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=nik.borisov@suse.com \
--cc=nikunj.dadhania@amd.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rmk+kernel@armlinux.org.uk \
--cc=sandipan.das@amd.com \
--cc=santosh.shukla@amd.com \
--cc=seanjc@google.com \
--cc=sibs@chinatelecom.cn \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®