Go to file
Sean Christopherson 0b3734e06f KVM: x86: Re-split x2APIC ICR into ICR+ICR2 for AMD (x2AVIC)
commit 73b42dc69be8564d4951a14d00f827929fe5ef79 upstream.

Re-introduce the "split" x2APIC ICR storage that KVM used prior to Intel's
IPI virtualization support, but only for AMD.  While not stated anywhere
in the APM, despite stating the ICR is a single 64-bit register, AMD CPUs
store the 64-bit ICR as two separate 32-bit values in ICR and ICR2.  When
IPI virtualization (IPIv on Intel, all AVIC flavors on AMD) is enabled,
KVM needs to match CPU behavior as some ICR ICR writes will be handled by
the CPU, not by KVM.

Add a kvm_x86_ops knob to control the underlying format used by the CPU to
store the x2APIC ICR, and tune it to AMD vs. Intel regardless of whether
or not x2AVIC is enabled.  If KVM is handling all ICR writes, the storage
format for x2APIC mode doesn't matter, and having the behavior follow AMD
versus Intel will provide better test coverage and ease debugging.

Fixes: 4d1d7942e3 ("KVM: SVM: Introduce logic to (de)activate x2AVIC mode")
Cc: stable@vger.kernel.org
Cc: Maxim Levitsky <mlevitsk@redhat.com>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Link: https://lore.kernel.org/r/20240719235107.3023592-4-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Like Xu <likexu@tencent.com>
2024-10-12 10:13:09 +08:00
Documentation Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
arch KVM: x86: Re-split x2APIC ICR into ICR+ICR2 for AMD (x2AVIC) 2024-10-12 10:13:09 +08:00
block Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
certs certs: Reference revocation list for all keyrings 2023-08-17 20:12:41 +00:00
crypto Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
dist Merge branch 'haisu/master-tryrue-20240905-merge-honglin' into 'master' (merge request !197) 2024-09-29 01:56:56 +00:00
drivers Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
fs Merge branch 'haisu/master-cve-v9' into 'master' (merge request !204) 2024-10-12 01:09:00 +00:00
include Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
init Merge linux 6.6.48 2024-09-29 16:01:50 +08:00
io_uring io_uring/net: harden multishot termination case for recv 2024-10-10 11:58:02 +02:00
ipc sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table) 2024-08-11 12:47:13 +02:00
kernel Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
lib Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
mm Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
net Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
rust rust: sync: require `T: Sync` for `LockedBy::access` 2024-10-10 11:57:44 +02:00
samples samples/bpf: Fix compilation errors with cf-protection option 2024-10-04 16:29:19 +02:00
scripts Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
security Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
sound Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
tools Merge linux 6.6.56 2024-10-11 21:27:37 +08:00
usr initramfs: Encode dependency on KBUILD_BUILD_TIMESTAMP 2023-06-06 17:54:49 +09:00
virt KVM: Fix coalesced_mmio_has_room() to avoid premature userspace exit 2024-10-12 10:13:09 +08:00
.clang-format iommu: Add for_each_group_device() 2023-05-23 08:15:51 +02:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes dist: initial support 2023-12-12 15:56:34 +08:00
.gitignore Merge branch '6.6.54' 2024-10-10 21:47:18 +08:00
.gitmodules drivers/thirdparty: put release-drivers in tree 2024-08-27 17:10:54 +08:00
.mailmap 20 hotfixes. 12 are cc:stable and the remainder address post-6.5 issues 2023-10-24 09:52:16 -10:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS USB: Remove Wireless USB and UWB documentation 2023-08-09 14:17:32 +02:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kconfig: Fix duplicate "Tencent Kernel Features" menu config 2024-06-24 20:23:33 +08:00
MAINTAINERS Merge linux 6.6.51 2024-09-29 19:06:17 +08:00
Makefile Merge linux 6.6.56 2024-10-11 21:27:37 +08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
config-readme Makefile, dist: add "make tencentconfig" support 2024-03-04 13:25:26 +08:00

README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.