projects/linux·commit f0804804

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

f0804804 · Linus Torvalds <[email protected]> · 2013-11-15 13:51:36 +09:00

Pull KVM changes from Paolo Bonzini:
 "Here are the 3.13 KVM changes.  There was a lot of work on the PPC
  side: the HV and emulation flavors can now coexist in a single kernel
  is probably the most interesting change from a user point of view.

  On the x86 side there are nested virtualization improvements and a few
  bugfixes.

  ARM got transparent huge page support, improved overcommit, and
  support for big endian guests.

  Finally, there is a new interface to connect KVM with VFIO.  This
  helps with devices that use NoSnoop PCI transactions, letting the
  driver in the guest execute WBINVD instructions.  This includes some
  nVidia cards on Windows, that fail to start without these patches and
  the corresponding userspace changes"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (146 commits)
  kvm, vmx: Fix lazy FPU on nested guest
  arm/arm64: KVM: PSCI: propagate caller endianness to the incoming vcpu
  arm/arm64: KVM: MMIO support for BE guest
  kvm, cpuid: Fix sparse warning
  kvm: Delete prototype for non-existent function kvm_check_iopl
  kvm: Delete prototype for non-existent function complete_pio
  hung_task: add method to reset detector
  pvclock: detect watchdog reset at pvclock read
  kvm: optimize out smp_mb after srcu_read_unlock
  srcu: API for barrier after srcu read unlock
  KVM: remove vm mmap method
  KVM: IOMMU: hva align mapping page size
  KVM: x86: trace cpuid emulation when called from emulator
  KVM: emulator: cleanup decode_register_operand() a bit
  KVM: emulator: check rex prefix inside decode_register()
  KVM: x86: fix emulation of "movzbl %bpl, %eax"
  kvm_host: typo fix
  KVM: x86: emulate SAHF instruction
  MAINTAINERS: add tree for kvm.git
  Documentation/kvm: add a 00-INDEX file
  ...
Commit
f080480488028bcc25357f85e8ae54ccc3bb7173
Parents
eda670c6 · e504c909

Merge commit. Changes below are compared with the first parent: eda670c6.

Changes

133 files changed · +5170 −2239

FileStatusAddDelContent
Documentation/virtual/kvm/00-INDEXadded+24−0View file
Documentation/virtual/kvm/api.txtmodified+145−7View file
Documentation/virtual/kvm/cpuid.txtmodified+7−0View file
Documentation/virtual/kvm/devices/vfio.txtadded+22−0View file
Documentation/virtual/kvm/locking.txtmodified+17−2View file
MAINTAINERSmodified+2−1View file
arch/arm/include/asm/kvm_arm.hmodified+6−3View file
arch/arm/include/asm/kvm_asm.hmodified+1−1View file
arch/arm/include/asm/kvm_emulate.hmodified+51−0View file
arch/arm/include/asm/kvm_host.hmodified+1−5View file
arch/arm/include/asm/kvm_mmu.hmodified+14−3View file
arch/arm/include/asm/pgtable-3level.hmodified+2−0View file
arch/arm/include/uapi/asm/kvm.hmodified+2−1View file
arch/arm/kvm/Kconfigmodified+1−0View file
arch/arm/kvm/Makefilemodified+1−1View file
arch/arm/kvm/arm.cmodified+16−2View file
arch/arm/kvm/coproc.cmodified+120−0View file
arch/arm/kvm/coproc_a15.cmodified+1−116View file
arch/arm/kvm/coproc_a7.cadded+54−0View file
arch/arm/kvm/emulate.cmodified+1−1View file
arch/arm/kvm/guest.cmodified+23−1View file
arch/arm/kvm/handle_exit.cmodified+13−7View file
arch/arm/kvm/mmio.cmodified+75−11View file
arch/arm/kvm/mmu.cmodified+185−38View file
arch/arm/kvm/psci.cmodified+17−4View file
arch/arm/kvm/reset.cmodified+6−9View file
arch/arm64/include/asm/kvm_arm.hmodified+6−2View file
arch/arm64/include/asm/kvm_emulate.hmodified+61−0View file
arch/arm64/include/asm/kvm_host.hmodified+1−5View file
arch/arm64/include/asm/kvm_mmu.hmodified+9−3View file
arch/arm64/include/asm/pgtable-hwdef.hmodified+2−0View file
arch/arm64/kvm/Kconfigmodified+1−0View file
arch/arm64/kvm/guest.cmodified+20−0View file
arch/arm64/kvm/handle_exit.cmodified+13−5View file
arch/ia64/include/asm/kvm_host.hmodified+1−5View file
arch/ia64/kvm/kvm-ia64.cmodified+3−2View file
arch/mips/include/asm/kvm_host.hmodified+0−7View file
arch/mips/kvm/kvm_mips.cmodified+3−2View file
arch/powerpc/include/asm/disassemble.hmodified+4−0View file
arch/powerpc/include/asm/exception-64s.hmodified+20−1View file
arch/powerpc/include/asm/kvm_asm.hmodified+4−0View file
arch/powerpc/include/asm/kvm_book3s.hmodified+19−213View file
arch/powerpc/include/asm/kvm_book3s_32.hmodified+1−1View file
arch/powerpc/include/asm/kvm_book3s_64.hmodified+4−4View file
arch/powerpc/include/asm/kvm_book3s_asm.hmodified+5−4View file
arch/powerpc/include/asm/kvm_booke.hmodified+6−1View file
arch/powerpc/include/asm/kvm_host.hmodified+34−23View file
arch/powerpc/include/asm/kvm_ppc.hmodified+79−28View file
arch/powerpc/include/asm/paca.hmodified+1−1View file
arch/powerpc/include/asm/processor.hmodified+2−0View file
arch/powerpc/include/asm/pte-book3e.hmodified+1−1View file
arch/powerpc/include/asm/reg.hmodified+15−0View file
arch/powerpc/include/uapi/asm/kvm.hmodified+82−4View file
arch/powerpc/kernel/asm-offsets.cmodified+14−7View file
arch/powerpc/kernel/exceptions-64s.Smodified+28−2View file
arch/powerpc/kernel/idle_power7.Smodified+1−1View file
arch/powerpc/kernel/traps.cmodified+1−1View file
arch/powerpc/kvm/44x.cmodified+43−15View file
arch/powerpc/kvm/44x_emulate.cmodified+4−4View file
arch/powerpc/kvm/44x_tlb.cmodified+1−1View file
arch/powerpc/kvm/Kconfigmodified+22−6View file
arch/powerpc/kvm/Makefilemodified+21−8View file
arch/powerpc/kvm/book3s.cmodified+246−11View file
arch/powerpc/kvm/book3s.hadded+34−0View file
arch/powerpc/kvm/book3s_32_mmu.cmodified+42−31View file
arch/powerpc/kvm/book3s_32_mmu_host.cmodified+12−4View file
arch/powerpc/kvm/book3s_64_mmu.cmodified+148−33View file
arch/powerpc/kvm/book3s_64_mmu_host.cmodified+79−27View file
arch/powerpc/kvm/book3s_64_mmu_hv.cmodified+10−14View file
arch/powerpc/kvm/book3s_64_vio_hv.cmodified+1−0View file
arch/powerpc/kvm/book3s_emulate.cmodified+7−11View file
arch/powerpc/kvm/book3s_exports.cmodified+3−2View file
arch/powerpc/kvm/book3s_hv.cmodified+309−80View file
arch/powerpc/kvm/book3s_hv_interrupts.Smodified+0−3View file
arch/powerpc/kvm/book3s_hv_rmhandlers.Smodified+356−262View file
arch/powerpc/kvm/book3s_interrupts.Smodified+26−6View file
arch/powerpc/kvm/book3s_mmu_hpte.cmodified+61−5View file
arch/powerpc/kvm/book3s_pr.cmodified+361−137View file
arch/powerpc/kvm/book3s_pr_papr.cmodified+37−15View file
arch/powerpc/kvm/book3s_rmhandlers.Smodified+5−27View file
arch/powerpc/kvm/book3s_rtas.cmodified+1−0View file
arch/powerpc/kvm/book3s_segment.Smodified+2−2View file
arch/powerpc/kvm/book3s_xics.cmodified+4−3View file
arch/powerpc/kvm/booke.cmodified+299−38View file
arch/powerpc/kvm/booke.hmodified+29−0View file
arch/powerpc/kvm/e500.cmodified+44−15View file
arch/powerpc/kvm/e500.hmodified+1−1View file
arch/powerpc/kvm/e500_emulate.cmodified+30−4View file
arch/powerpc/kvm/e500_mmu.cmodified+2−2View file
arch/powerpc/kvm/e500_mmu_host.cmodified+5−1View file
arch/powerpc/kvm/e500mc.cmodified+43−15View file
arch/powerpc/kvm/emulate.cmodified+7−5View file
arch/powerpc/kvm/powerpc.cmodified+95−76View file
arch/powerpc/kvm/trace.hmodified+0−429View file
arch/powerpc/kvm/trace_booke.hadded+177−0View file
arch/powerpc/kvm/trace_pr.hadded+297−0View file
arch/s390/include/asm/kvm_host.hmodified+0−8View file
arch/s390/kvm/diag.cmodified+1−3View file
arch/s390/kvm/gaccess.hmodified+14−7View file
arch/s390/kvm/intercept.cmodified+0−6View file
arch/s390/kvm/interrupt.cmodified+3−0View file
arch/s390/kvm/kvm-s390.cmodified+63−33View file
arch/s390/kvm/kvm-s390.hmodified+5−4View file
arch/s390/kvm/priv.cmodified+61−0View file
arch/x86/include/asm/kvm_emulate.hmodified+7−3View file
arch/x86/include/asm/kvm_host.hmodified+15−8View file
arch/x86/include/asm/pvclock.hmodified+2−0View file
arch/x86/include/uapi/asm/kvm.hmodified+3−3View file
arch/x86/include/uapi/asm/msr-index.hmodified+1−0View file
arch/x86/kernel/kvmclock.cmodified+1−0View file
arch/x86/kernel/pvclock.cmodified+13−0View file
arch/x86/kvm/Kconfigmodified+1−0View file
arch/x86/kvm/Makefilemodified+1−1View file
arch/x86/kvm/cpuid.cmodified+106−9View file
arch/x86/kvm/cpuid.hmodified+3−2View file
arch/x86/kvm/emulate.cmodified+107−23View file
arch/x86/kvm/mmu.cmodified+34−81View file
arch/x86/kvm/mmu.hmodified+2−2View file
arch/x86/kvm/svm.cmodified+2−6View file
arch/x86/kvm/vmx.cmodified+113−45View file
arch/x86/kvm/x86.cmodified+77−31View file
arch/x86/kvm/x86.hmodified+1−0View file
include/linux/kvm_host.hmodified+26−16View file
include/linux/sched.hmodified+8−0View file
include/linux/srcu.hmodified+14−0View file
include/trace/events/kvm.hmodified+4−6View file
include/uapi/linux/kvm.hmodified+11−0View file
kernel/hung_task.cmodified+11−0View file
virt/kvm/Kconfigmodified+3−0View file
virt/kvm/async_pf.cmodified+6−16View file
virt/kvm/iommu.cmodified+20−18View file
virt/kvm/kvm_main.cmodified+55−79View file
virt/kvm/vfio.cadded+264−0View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/virtual/kvm/00-INDEX

View file
diff --git a/Documentation/virtual/kvm/00-INDEX b/Documentation/virtual/kvm/00-INDEX
new file mode 100644
index 0000000..641ec92
--- /dev/null
+++ b/Documentation/virtual/kvm/00-INDEX
@@ -0,0 +1,24 @@
+00-INDEX
+ - this file.
+api.txt
+ - KVM userspace API.
+cpuid.txt
+ - KVM-specific cpuid leaves (x86).
+devices/
+ - KVM_CAP_DEVICE_CTRL userspace API.
+hypercalls.txt
+ - KVM hypercalls.
+locking.txt
+ - notes on KVM locks.
+mmu.txt
+ - the x86 kvm shadow mmu.
+msr.txt
+ - KVM-specific MSRs (x86).
+nested-vmx.txt
+ - notes on nested virtualization for Intel x86 processors.
+ppc-pv.txt
+ - the paravirtualization interface on PowerPC.
+review-checklist.txt
+ - review checklist for KVM patches.
+timekeeping.txt
+ - timekeeping virtualization for x86-based architectures.

Documentation/virtual/kvm/api.txt

View file
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 858aecf..a30035d 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1122,9 +1122,9 @@ struct kvm_cpuid2 {
struct kvm_cpuid_entry2 entries[0];
};
-#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX 1
-#define KVM_CPUID_FLAG_STATEFUL_FUNC 2
-#define KVM_CPUID_FLAG_STATE_READ_NEXT 4
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
struct kvm_cpuid_entry2 {
__u32 function;
@@ -1810,6 +1810,50 @@ registers, find a list below:
PPC | KVM_REG_PPC_TLB3PS | 32
PPC | KVM_REG_PPC_EPTCFG | 32
PPC | KVM_REG_PPC_ICP_STATE | 64
+ PPC | KVM_REG_PPC_TB_OFFSET | 64
+ PPC | KVM_REG_PPC_SPMC1 | 32
+ PPC | KVM_REG_PPC_SPMC2 | 32
+ PPC | KVM_REG_PPC_IAMR | 64
+ PPC | KVM_REG_PPC_TFHAR | 64
+ PPC | KVM_REG_PPC_TFIAR | 64
+ PPC | KVM_REG_PPC_TEXASR | 64
+ PPC | KVM_REG_PPC_FSCR | 64
+ PPC | KVM_REG_PPC_PSPB | 32
+ PPC | KVM_REG_PPC_EBBHR | 64
+ PPC | KVM_REG_PPC_EBBRR | 64
+ PPC | KVM_REG_PPC_BESCR | 64
+ PPC | KVM_REG_PPC_TAR | 64
+ PPC | KVM_REG_PPC_DPDES | 64
+ PPC | KVM_REG_PPC_DAWR | 64
+ PPC | KVM_REG_PPC_DAWRX | 64
+ PPC | KVM_REG_PPC_CIABR | 64
+ PPC | KVM_REG_PPC_IC | 64
+ PPC | KVM_REG_PPC_VTB | 64
+ PPC | KVM_REG_PPC_CSIGR | 64
+ PPC | KVM_REG_PPC_TACR | 64
+ PPC | KVM_REG_PPC_TCSCR | 64
+ PPC | KVM_REG_PPC_PID | 64
+ PPC | KVM_REG_PPC_ACOP | 64
+ PPC | KVM_REG_PPC_VRSAVE | 32
+ PPC | KVM_REG_PPC_LPCR | 64
+ PPC | KVM_REG_PPC_PPR | 64
+ PPC | KVM_REG_PPC_ARCH_COMPAT 32
+ PPC | KVM_REG_PPC_TM_GPR0 | 64
+ ...
+ PPC | KVM_REG_PPC_TM_GPR31 | 64
+ PPC | KVM_REG_PPC_TM_VSR0 | 128
+ ...
+ PPC | KVM_REG_PPC_TM_VSR63 | 128
+ PPC | KVM_REG_PPC_TM_CR | 64
+ PPC | KVM_REG_PPC_TM_LR | 64
+ PPC | KVM_REG_PPC_TM_CTR | 64
+ PPC | KVM_REG_PPC_TM_FPSCR | 64
+ PPC | KVM_REG_PPC_TM_AMR | 64
+ PPC | KVM_REG_PPC_TM_PPR | 64
+ PPC | KVM_REG_PPC_TM_VRSAVE | 64
+ PPC | KVM_REG_PPC_TM_VSCR | 32
+ PPC | KVM_REG_PPC_TM_DSCR | 64
+ PPC | KVM_REG_PPC_TM_TAR | 64
ARM registers are mapped using the lower 32 bits. The upper 16 of that
is the register group type, or coprocessor number:
@@ -2304,7 +2348,31 @@ Possible features:
Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
-4.83 KVM_GET_REG_LIST
+4.83 KVM_ARM_PREFERRED_TARGET
+
+Capability: basic
+Architectures: arm, arm64
+Type: vm ioctl
+Parameters: struct struct kvm_vcpu_init (out)
+Returns: 0 on success; -1 on error
+Errors:
+ ENODEV: no preferred target available for the host
+
+This queries KVM for preferred CPU target type which can be emulated
+by KVM on underlying host.
+
+The ioctl returns struct kvm_vcpu_init instance containing information
+about preferred CPU target type and recommended features for it. The
+kvm_vcpu_init->features bitmap returned will have feature bits set if
+the preferred target recommends setting these features, but this is
+not mandatory.
+
+The information returned by this ioctl can be used to prepare an instance
+of struct kvm_vcpu_init for KVM_ARM_VCPU_INIT ioctl which will result in
+in VCPU matching underlying host.
+
+
+4.84 KVM_GET_REG_LIST
Capability: basic
Architectures: arm, arm64
@@ -2323,8 +2391,7 @@ struct kvm_reg_list {
This ioctl returns the guest registers that are supported for the
KVM_GET_ONE_REG/KVM_SET_ONE_REG calls.
-
-4.84 KVM_ARM_SET_DEVICE_ADDR
+4.85 KVM_ARM_SET_DEVICE_ADDR
Capability: KVM_CAP_ARM_SET_DEVICE_ADDR
Architectures: arm, arm64
@@ -2362,7 +2429,7 @@ must be called after calling KVM_CREATE_IRQCHIP, but before calling
KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the
base addresses will return -EEXIST.
-4.85 KVM_PPC_RTAS_DEFINE_TOKEN
+4.86 KVM_PPC_RTAS_DEFINE_TOKEN
Capability: KVM_CAP_PPC_RTAS
Architectures: ppc
@@ -2661,6 +2728,77 @@ and usually define the validity of a groups of registers. (e.g. one bit
};
+4.81 KVM_GET_EMULATED_CPUID
+
+Capability: KVM_CAP_EXT_EMUL_CPUID
+Architectures: x86
+Type: system ioctl
+Parameters: struct kvm_cpuid2 (in/out)
+Returns: 0 on success, -1 on error
+
+struct kvm_cpuid2 {
+ __u32 nent;
+ __u32 flags;
+ struct kvm_cpuid_entry2 entries[0];
+};
+
+The member 'flags' is used for passing flags from userspace.
+
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
+
+struct kvm_cpuid_entry2 {
+ __u32 function;
+ __u32 index;
+ __u32 flags;
+ __u32 eax;
+ __u32 ebx;
+ __u32 ecx;
+ __u32 edx;
+ __u32 padding[3];
+};
+
+This ioctl returns x86 cpuid features which are emulated by
+kvm.Userspace can use the information returned by this ioctl to query
+which features are emulated by kvm instead of being present natively.
+
+Userspace invokes KVM_GET_EMULATED_CPUID by passing a kvm_cpuid2
+structure with the 'nent' field indicating the number of entries in
+the variable-size array 'entries'. If the number of entries is too low
+to describe the cpu capabilities, an error (E2BIG) is returned. If the
+number is too high, the 'nent' field is adjusted and an error (ENOMEM)
+is returned. If the number is just right, the 'nent' field is adjusted
+to the number of valid entries in the 'entries' array, which is then
+filled.
+
+The entries returned are the set CPUID bits of the respective features
+which kvm emulates, as returned by the CPUID instruction, with unknown
+or unsupported feature bits cleared.
+
+Features like x2apic, for example, may not be present in the host cpu
+but are exposed by kvm in KVM_GET_SUPPORTED_CPUID because they can be
+emulated efficiently and thus not included here.
+
+The fields in each entry are defined as follows:
+
+ function: the eax value used to obtain the entry
+ index: the ecx value used to obtain the entry (for entries that are
+ affected by ecx)
+ flags: an OR of zero or more of the following:
+ KVM_CPUID_FLAG_SIGNIFCANT_INDEX:
+ if the index field is valid
+ KVM_CPUID_FLAG_STATEFUL_FUNC:
+ if cpuid for this function returns different values for successive
+ invocations; there will be several entries with the same function,
+ all with this flag set
+ KVM_CPUID_FLAG_STATE_READ_NEXT:
+ for KVM_CPUID_FLAG_STATEFUL_FUNC entries, set if this entry is
+ the first entry to be read by a cpu
+ eax, ebx, ecx, edx: the values returned by the cpuid instruction for
+ this function/index combination
+
+
6. Capabilities that can be enabled
-----------------------------------

Documentation/virtual/kvm/cpuid.txt

View file
diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt
index 22ff659..3c65feb 100644
--- a/Documentation/virtual/kvm/cpuid.txt
+++ b/Documentation/virtual/kvm/cpuid.txt
@@ -43,6 +43,13 @@ KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs
KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by
|| || writing to msr 0x4b564d02
------------------------------------------------------------------------------
+KVM_FEATURE_STEAL_TIME || 5 || steal time can be enabled by
+ || || writing to msr 0x4b564d03.
+------------------------------------------------------------------------------
+KVM_FEATURE_PV_EOI || 6 || paravirtualized end of interrupt
+ || || handler can be enabled by writing
+ || || to msr 0x4b564d04.
+------------------------------------------------------------------------------
KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit
|| || before enabling paravirtualized
|| || spinlock support.

Documentation/virtual/kvm/devices/vfio.txt

View file
diff --git a/Documentation/virtual/kvm/devices/vfio.txt b/Documentation/virtual/kvm/devices/vfio.txt
new file mode 100644
index 0000000..ef51740
--- /dev/null
+++ b/Documentation/virtual/kvm/devices/vfio.txt
@@ -0,0 +1,22 @@
+VFIO virtual device
+===================
+
+Device types supported:
+ KVM_DEV_TYPE_VFIO
+
+Only one VFIO instance may be created per VM. The created device
+tracks VFIO groups in use by the VM and features of those groups
+important to the correctness and acceleration of the VM. As groups
+are enabled and disabled for use by the VM, KVM should be updated
+about their presence. When registered with KVM, a reference to the
+VFIO-group is held by KVM.
+
+Groups:
+ KVM_DEV_VFIO_GROUP
+
+KVM_DEV_VFIO_GROUP attributes:
+ KVM_DEV_VFIO_GROUP_ADD: Add a VFIO group to VFIO-KVM device tracking
+ KVM_DEV_VFIO_GROUP_DEL: Remove a VFIO group from VFIO-KVM device tracking
+
+For each, kvm_device_attr.addr points to an int32_t file descriptor
+for the VFIO group.

Documentation/virtual/kvm/locking.txt

View file
diff --git a/Documentation/virtual/kvm/locking.txt b/Documentation/virtual/kvm/locking.txt
index 41b7ac9..f886941 100644
--- a/Documentation/virtual/kvm/locking.txt
+++ b/Documentation/virtual/kvm/locking.txt
@@ -132,10 +132,14 @@ See the comments in spte_has_volatile_bits() and mmu_spte_update().
------------
Name: kvm_lock
-Type: raw_spinlock
+Type: spinlock_t
Arch: any
Protects: - vm_list
- - hardware virtualization enable/disable
+
+Name: kvm_count_lock
+Type: raw_spinlock_t
+Arch: any
+Protects: - hardware virtualization enable/disable
Comment: 'raw' because hardware enabling/disabling must be atomic /wrt
migration.
@@ -151,3 +155,14 @@ Type: spinlock_t
Arch: any
Protects: -shadow page/shadow tlb entry
Comment: it is a spinlock since it is used in mmu notifier.
+
+Name: kvm->srcu
+Type: srcu lock
+Arch: any
+Protects: - kvm->memslots
+ - kvm->buses
+Comment: The srcu read lock must be held while accessing memslots (e.g.
+ when using gfn_to_* functions) and while accessing in-kernel
+ MMIO/PIO address->device structure mapping (kvm->buses).
+ The srcu index can be stored in kvm_vcpu->srcu_idx per vcpu
+ if it is needed by multiple functions.

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index f3ef1d1..583af4b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4871,7 +4871,8 @@ KERNEL VIRTUAL MACHINE (KVM)
M: Gleb Natapov <[email protected]>
M: Paolo Bonzini <[email protected]>
-W: http://linux-kvm.org
+W: http://www.linux-kvm.org
+T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
S: Supported
F: Documentation/*/kvm*.txt
F: Documentation/virtual/kvm/

arch/arm/include/asm/kvm_arm.h

View file
diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h
index 64e9696..1d3153c 100644
--- a/arch/arm/include/asm/kvm_arm.h
+++ b/arch/arm/include/asm/kvm_arm.h
@@ -57,6 +57,7 @@
* TSC: Trap SMC
* TSW: Trap cache operations by set/way
* TWI: Trap WFI
+ * TWE: Trap WFE
* TIDCP: Trap L2CTLR/L2ECTLR
* BSU_IS: Upgrade barriers to the inner shareable domain
* FB: Force broadcast of all maintainance operations
@@ -67,7 +68,7 @@
*/
#define HCR_GUEST_MASK (HCR_TSC | HCR_TSW | HCR_TWI | HCR_VM | HCR_BSU_IS | \
HCR_FB | HCR_TAC | HCR_AMO | HCR_IMO | HCR_FMO | \
- HCR_SWIO | HCR_TIDCP)
+ HCR_TWE | HCR_SWIO | HCR_TIDCP)
#define HCR_VIRT_EXCP_MASK (HCR_VA | HCR_VI | HCR_VF)
/* System Control Register (SCTLR) bits */
@@ -95,12 +96,12 @@
#define TTBCR_IRGN1 (3 << 24)
#define TTBCR_EPD1 (1 << 23)
#define TTBCR_A1 (1 << 22)
-#define TTBCR_T1SZ (3 << 16)
+#define TTBCR_T1SZ (7 << 16)
#define TTBCR_SH0 (3 << 12)
#define TTBCR_ORGN0 (3 << 10)
#define TTBCR_IRGN0 (3 << 8)
#define TTBCR_EPD0 (1 << 7)
-#define TTBCR_T0SZ 3
+#define TTBCR_T0SZ (7 << 0)
#define HTCR_MASK (TTBCR_T0SZ | TTBCR_IRGN0 | TTBCR_ORGN0 | TTBCR_SH0)
/* Hyp System Trap Register */
@@ -208,6 +209,8 @@
#define HSR_EC_DABT (0x24)
#define HSR_EC_DABT_HYP (0x25)
+#define HSR_WFI_IS_WFE (1U << 0)
+
#define HSR_HVC_IMM_MASK ((1UL << 16) - 1)
#define HSR_DABT_S1PTW (1U << 7)

arch/arm/include/asm/kvm_asm.h

View file
diff --git a/arch/arm/include/asm/kvm_asm.h b/arch/arm/include/asm/kvm_asm.h
index a2f43dd..661da11 100644
--- a/arch/arm/include/asm/kvm_asm.h
+++ b/arch/arm/include/asm/kvm_asm.h
@@ -39,7 +39,7 @@
#define c6_IFAR 17 /* Instruction Fault Address Register */
#define c7_PAR 18 /* Physical Address Register */
#define c7_PAR_high 19 /* PAR top 32 bits */
-#define c9_L2CTLR 20 /* Cortex A15 L2 Control Register */
+#define c9_L2CTLR 20 /* Cortex A15/A7 L2 Control Register */
#define c10_PRRR 21 /* Primary Region Remap Register */
#define c10_NMRR 22 /* Normal Memory Remap Register */
#define c12_VBAR 23 /* Vector Base Address Register */

arch/arm/include/asm/kvm_emulate.h

View file
diff --git a/arch/arm/include/asm/kvm_emulate.h b/arch/arm/include/asm/kvm_emulate.h
index a464e8d..0fa90c9 100644
--- a/arch/arm/include/asm/kvm_emulate.h
+++ b/arch/arm/include/asm/kvm_emulate.h
@@ -157,4 +157,55 @@ static inline u32 kvm_vcpu_hvc_get_imm(struct kvm_vcpu *vcpu)
return kvm_vcpu_get_hsr(vcpu) & HSR_HVC_IMM_MASK;
}
+static inline unsigned long kvm_vcpu_get_mpidr(struct kvm_vcpu *vcpu)
+{
+ return vcpu->arch.cp15[c0_MPIDR];
+}
+
+static inline void kvm_vcpu_set_be(struct kvm_vcpu *vcpu)
+{
+ *vcpu_cpsr(vcpu) |= PSR_E_BIT;
+}
+
+static inline bool kvm_vcpu_is_be(struct kvm_vcpu *vcpu)
+{
+ return !!(*vcpu_cpsr(vcpu) & PSR_E_BIT);
+}
+
+static inline unsigned long vcpu_data_guest_to_host(struct kvm_vcpu *vcpu,
+ unsigned long data,
+ unsigned int len)
+{
+ if (kvm_vcpu_is_be(vcpu)) {
+ switch (len) {
+ case 1:
+ return data & 0xff;
+ case 2:
+ return be16_to_cpu(data & 0xffff);
+ default:
+ return be32_to_cpu(data);
+ }
+ }
+
+ return data; /* Leave LE untouched */
+}
+
+static inline unsigned long vcpu_data_host_to_guest(struct kvm_vcpu *vcpu,
+ unsigned long data,
+ unsigned int len)
+{
+ if (kvm_vcpu_is_be(vcpu)) {
+ switch (len) {
+ case 1:
+ return data & 0xff;
+ case 2:
+ return cpu_to_be16(data & 0xffff);
+ default:
+ return cpu_to_be32(data);
+ }
+ }
+
+ return data; /* Leave LE untouched */
+}
+
#endif /* __ARM_KVM_EMULATE_H__ */

arch/arm/include/asm/kvm_host.h

View file
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 7d22517..8a6f6db 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -38,11 +38,6 @@
#define KVM_VCPU_MAX_FEATURES 1
-/* We don't currently support large pages. */
-#define KVM_HPAGE_GFN_SHIFT(x) 0
-#define KVM_NR_PAGE_SIZES 1
-#define KVM_PAGES_PER_HPAGE(x) (1UL<<31)
-
#include <kvm/arm_vgic.h>
struct kvm_vcpu;
@@ -154,6 +149,7 @@ struct kvm_vcpu_stat {
struct kvm_vcpu_init;
int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
const struct kvm_vcpu_init *init);
+int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init);
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);
int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices);
struct kvm_one_reg;

arch/arm/include/asm/kvm_mmu.h

View file
diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h
index 9b28c41..77de4a4 100644
--- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h
@@ -62,6 +62,12 @@ phys_addr_t kvm_get_idmap_vector(void);
int kvm_mmu_init(void);
void kvm_clear_hyp_idmap(void);
+static inline void kvm_set_pmd(pmd_t *pmd, pmd_t new_pmd)
+{
+ *pmd = new_pmd;
+ flush_pmd_entry(pmd);
+}
+
static inline void kvm_set_pte(pte_t *pte, pte_t new_pte)
{
*pte = new_pte;
@@ -103,9 +109,15 @@ static inline void kvm_set_s2pte_writable(pte_t *pte)
pte_val(*pte) |= L_PTE_S2_RDWR;
}
+static inline void kvm_set_s2pmd_writable(pmd_t *pmd)
+{
+ pmd_val(*pmd) |= L_PMD_S2_RDWR;
+}
+
struct kvm;
-static inline void coherent_icache_guest_page(struct kvm *kvm, gfn_t gfn)
+static inline void coherent_icache_guest_page(struct kvm *kvm, hva_t hva,
+ unsigned long size)
{
/*
* If we are going to insert an instruction page and the icache is
@@ -120,8 +132,7 @@ static inline void coherent_icache_guest_page(struct kvm *kvm, gfn_t gfn)
* need any kind of flushing (DDI 0406C.b - Page B3-1392).
*/
if (icache_is_pipt()) {
- unsigned long hva = gfn_to_hva(kvm, gfn);
- __cpuc_coherent_user_range(hva, hva + PAGE_SIZE);
+ __cpuc_coherent_user_range(hva, hva + size);
} else if (!icache_is_vivt_asid_tagged()) {
/* any kind of VIPT cache */
__flush_icache_all();

arch/arm/include/asm/pgtable-3level.h

View file
diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h
index 39c54cf..4f95039 100644
--- a/arch/arm/include/asm/pgtable-3level.h
+++ b/arch/arm/include/asm/pgtable-3level.h
@@ -126,6 +126,8 @@
#define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */
#define L_PTE_S2_RDWR (_AT(pteval_t, 3) << 6) /* HAP[2:1] */
+#define L_PMD_S2_RDWR (_AT(pmdval_t, 3) << 6) /* HAP[2:1] */
+
/*
* Hyp-mode PL2 PTE definitions for LPAE.
*/

arch/arm/include/uapi/asm/kvm.h

View file
diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h
index c1ee007..c498b60 100644
--- a/arch/arm/include/uapi/asm/kvm.h
+++ b/arch/arm/include/uapi/asm/kvm.h
@@ -63,7 +63,8 @@ struct kvm_regs {
/* Supported Processor Types */
#define KVM_ARM_TARGET_CORTEX_A15 0
-#define KVM_ARM_NUM_TARGETS 1
+#define KVM_ARM_TARGET_CORTEX_A7 1
+#define KVM_ARM_NUM_TARGETS 2
/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */
#define KVM_ARM_DEVICE_TYPE_SHIFT 0

arch/arm/kvm/Kconfig

View file
diff --git a/arch/arm/kvm/Kconfig b/arch/arm/kvm/Kconfig
index ebf5015..466bd29 100644
--- a/arch/arm/kvm/Kconfig
+++ b/arch/arm/kvm/Kconfig
@@ -20,6 +20,7 @@ config KVM
bool "Kernel-based Virtual Machine (KVM) support"
select PREEMPT_NOTIFIERS
select ANON_INODES
+ select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_MMIO
select KVM_ARM_HOST
depends on ARM_VIRT_EXT && ARM_LPAE

arch/arm/kvm/Makefile

View file
diff --git a/arch/arm/kvm/Makefile b/arch/arm/kvm/Makefile
index d99bee4..789bca9 100644
--- a/arch/arm/kvm/Makefile
+++ b/arch/arm/kvm/Makefile
@@ -19,6 +19,6 @@ kvm-arm-y = $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o
obj-y += kvm-arm.o init.o interrupts.o
obj-y += arm.o handle_exit.o guest.o mmu.o emulate.o reset.o
-obj-y += coproc.o coproc_a15.o mmio.o psci.o perf.o
+obj-y += coproc.o coproc_a15.o coproc_a7.o mmio.o psci.o perf.o
obj-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic.o
obj-$(CONFIG_KVM_ARM_TIMER) += $(KVM)/arm/arch_timer.o

arch/arm/kvm/arm.c

View file
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index aea7ccb..2a700e0 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -152,12 +152,13 @@ int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
return VM_FAULT_SIGBUS;
}
-void kvm_arch_free_memslot(struct kvm_memory_slot *free,
+void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
struct kvm_memory_slot *dont)
{
}
-int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
+int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+ unsigned long npages)
{
return 0;
}
@@ -797,6 +798,19 @@ long kvm_arch_vm_ioctl(struct file *filp,
return -EFAULT;
return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr);
}
+ case KVM_ARM_PREFERRED_TARGET: {
+ int err;
+ struct kvm_vcpu_init init;
+
+ err = kvm_vcpu_preferred_target(&init);
+ if (err)
+ return err;
+
+ if (copy_to_user(argp, &init, sizeof(init)))
+ return -EFAULT;
+
+ return 0;
+ }
default:
return -EINVAL;

This diff is incomplete. Download the complete patch.

arch/arm/kvm/coproc.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/coproc_a15.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/coproc_a7.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/guest.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/handle_exit.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/mmio.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/mmu.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/psci.c

View file

This diff is incomplete. Download the complete patch.

arch/arm/kvm/reset.c

View file

This diff is incomplete. Download the complete patch.

arch/arm64/include/asm/kvm_arm.h

View file

This diff is incomplete. Download the complete patch.

arch/arm64/include/asm/kvm_emulate.h

View file

This diff is incomplete. Download the complete patch.

arch/arm64/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/arm64/include/asm/kvm_mmu.h

View file

This diff is incomplete. Download the complete patch.

arch/arm64/include/asm/pgtable-hwdef.h

View file

This diff is incomplete. Download the complete patch.

arch/arm64/kvm/Kconfig

View file

This diff is incomplete. Download the complete patch.

arch/arm64/kvm/guest.c

View file

This diff is incomplete. Download the complete patch.

arch/arm64/kvm/handle_exit.c

View file

This diff is incomplete. Download the complete patch.

arch/ia64/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/ia64/kvm/kvm-ia64.c

View file

This diff is incomplete. Download the complete patch.

arch/mips/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/mips/kvm/kvm_mips.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/disassemble.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/exception-64s.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_asm.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_book3s.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_book3s_32.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_book3s_64.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_book3s_asm.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_booke.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/kvm_ppc.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/paca.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/processor.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/pte-book3e.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/asm/reg.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/include/uapi/asm/kvm.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kernel/asm-offsets.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kernel/exceptions-64s.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kernel/idle_power7.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kernel/traps.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/44x.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/44x_emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/44x_tlb.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/Kconfig

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/Makefile

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_32_mmu.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_32_mmu_host.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_64_mmu.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_64_mmu_host.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_64_mmu_hv.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_64_vio_hv.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_exports.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_hv.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_hv_interrupts.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_hv_rmhandlers.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_interrupts.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_mmu_hpte.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_pr.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_pr_papr.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_rmhandlers.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_rtas.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_segment.S

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/book3s_xics.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/booke.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/booke.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500_emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500_mmu.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500_mmu_host.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/e500mc.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/powerpc.c

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/trace.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/trace_booke.h

View file

This diff is incomplete. Download the complete patch.

arch/powerpc/kvm/trace_pr.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/diag.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/gaccess.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/intercept.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/interrupt.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/kvm-s390.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/kvm-s390.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/priv.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/asm/kvm_emulate.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/asm/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/asm/pvclock.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/uapi/asm/kvm.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/include/uapi/asm/msr-index.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/kvmclock.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kernel/pvclock.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/Kconfig

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/Makefile

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/cpuid.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/cpuid.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/emulate.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/mmu.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/mmu.h

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/svm.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/vmx.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/x86.c

View file

This diff is incomplete. Download the complete patch.

arch/x86/kvm/x86.h

View file

This diff is incomplete. Download the complete patch.

include/linux/kvm_host.h

View file

This diff is incomplete. Download the complete patch.

include/linux/sched.h

View file

This diff is incomplete. Download the complete patch.

include/linux/srcu.h

View file

This diff is incomplete. Download the complete patch.

include/trace/events/kvm.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/linux/kvm.h

View file

This diff is incomplete. Download the complete patch.

kernel/hung_task.c

View file

This diff is incomplete. Download the complete patch.

virt/kvm/Kconfig

View file

This diff is incomplete. Download the complete patch.

virt/kvm/async_pf.c

View file

This diff is incomplete. Download the complete patch.

virt/kvm/iommu.c

View file

This diff is incomplete. Download the complete patch.

virt/kvm/kvm_main.c

View file

This diff is incomplete. Download the complete patch.

virt/kvm/vfio.c

View file

This diff is incomplete. Download the complete patch.