Commit 4f231749 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull KVM fixes from Paolo Bonzini:
 "A bunch of one-liners (except the s390 one).

  The two more serious bugs ("KVM: SVM: Fix CPL export via SS.DPL" and
  "KVM: s390: add sie.h uapi header file to Kbuild and remove header
  dependency") were introduced in the 3.16 merge window"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: SVM: Fix CPL export via SS.DPL
  KVM: s390: add sie.h uapi header file to Kbuild and remove header dependency
  MIPS: KVM: Fix memory leak on VCPU
  KVM: x86: preserve the high 32-bits of the PAT register
  kvm: fix wrong address when writing Hyper-V tsc page
  KVM: x86: Increase the number of fixed MTRR regs to 10
parents 16874b2c 9a630d15
...@@ -384,6 +384,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) ...@@ -384,6 +384,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
kfree(vcpu->arch.guest_ebase); kfree(vcpu->arch.guest_ebase);
kfree(vcpu->arch.kseg0_commpage); kfree(vcpu->arch.kseg0_commpage);
kfree(vcpu);
} }
void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
......
...@@ -36,6 +36,7 @@ header-y += signal.h ...@@ -36,6 +36,7 @@ header-y += signal.h
header-y += socket.h header-y += socket.h
header-y += sockios.h header-y += sockios.h
header-y += sclp_ctl.h header-y += sclp_ctl.h
header-y += sie.h
header-y += stat.h header-y += stat.h
header-y += statfs.h header-y += statfs.h
header-y += swab.h header-y += swab.h
......
#ifndef _UAPI_ASM_S390_SIE_H #ifndef _UAPI_ASM_S390_SIE_H
#define _UAPI_ASM_S390_SIE_H #define _UAPI_ASM_S390_SIE_H
#include <asm/sigp.h>
#define diagnose_codes \ #define diagnose_codes \
{ 0x10, "DIAG (0x10) release pages" }, \ { 0x10, "DIAG (0x10) release pages" }, \
{ 0x44, "DIAG (0x44) time slice end" }, \ { 0x44, "DIAG (0x44) time slice end" }, \
...@@ -13,18 +11,18 @@ ...@@ -13,18 +11,18 @@
{ 0x500, "DIAG (0x500) KVM virtio functions" }, \ { 0x500, "DIAG (0x500) KVM virtio functions" }, \
{ 0x501, "DIAG (0x501) KVM breakpoint" } { 0x501, "DIAG (0x501) KVM breakpoint" }
#define sigp_order_codes \ #define sigp_order_codes \
{ SIGP_SENSE, "SIGP sense" }, \ { 0x01, "SIGP sense" }, \
{ SIGP_EXTERNAL_CALL, "SIGP external call" }, \ { 0x02, "SIGP external call" }, \
{ SIGP_EMERGENCY_SIGNAL, "SIGP emergency signal" }, \ { 0x03, "SIGP emergency signal" }, \
{ SIGP_STOP, "SIGP stop" }, \ { 0x05, "SIGP stop" }, \
{ SIGP_STOP_AND_STORE_STATUS, "SIGP stop and store status" }, \ { 0x06, "SIGP restart" }, \
{ SIGP_SET_ARCHITECTURE, "SIGP set architecture" }, \ { 0x09, "SIGP stop and store status" }, \
{ SIGP_SET_PREFIX, "SIGP set prefix" }, \ { 0x0b, "SIGP initial cpu reset" }, \
{ SIGP_SENSE_RUNNING, "SIGP sense running" }, \ { 0x0d, "SIGP set prefix" }, \
{ SIGP_RESTART, "SIGP restart" }, \ { 0x0e, "SIGP store status at address" }, \
{ SIGP_INITIAL_CPU_RESET, "SIGP initial cpu reset" }, \ { 0x12, "SIGP set architecture" }, \
{ SIGP_STORE_STATUS_AT_ADDRESS, "SIGP store status at address" } { 0x15, "SIGP sense running" }
#define icpt_prog_codes \ #define icpt_prog_codes \
{ 0x0001, "Prog Operation" }, \ { 0x0001, "Prog Operation" }, \
......
...@@ -95,7 +95,7 @@ static inline gfn_t gfn_to_index(gfn_t gfn, gfn_t base_gfn, int level) ...@@ -95,7 +95,7 @@ static inline gfn_t gfn_to_index(gfn_t gfn, gfn_t base_gfn, int level)
#define KVM_REFILL_PAGES 25 #define KVM_REFILL_PAGES 25
#define KVM_MAX_CPUID_ENTRIES 80 #define KVM_MAX_CPUID_ENTRIES 80
#define KVM_NR_FIXED_MTRR_REGION 88 #define KVM_NR_FIXED_MTRR_REGION 88
#define KVM_NR_VAR_MTRR 8 #define KVM_NR_VAR_MTRR 10
#define ASYNC_PF_PER_VCPU 64 #define ASYNC_PF_PER_VCPU 64
...@@ -461,7 +461,7 @@ struct kvm_vcpu_arch { ...@@ -461,7 +461,7 @@ struct kvm_vcpu_arch {
bool nmi_injected; /* Trying to inject an NMI this entry */ bool nmi_injected; /* Trying to inject an NMI this entry */
struct mtrr_state_type mtrr_state; struct mtrr_state_type mtrr_state;
u32 pat; u64 pat;
unsigned switch_db_regs; unsigned switch_db_regs;
unsigned long db[KVM_NR_DB_REGS]; unsigned long db[KVM_NR_DB_REGS];
......
...@@ -1462,6 +1462,7 @@ static void svm_get_segment(struct kvm_vcpu *vcpu, ...@@ -1462,6 +1462,7 @@ static void svm_get_segment(struct kvm_vcpu *vcpu,
*/ */
if (var->unusable) if (var->unusable)
var->db = 0; var->db = 0;
var->dpl = to_svm(vcpu)->vmcb->save.cpl;
break; break;
} }
} }
......
...@@ -1898,7 +1898,7 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data) ...@@ -1898,7 +1898,7 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data)
if (!(data & HV_X64_MSR_TSC_REFERENCE_ENABLE)) if (!(data & HV_X64_MSR_TSC_REFERENCE_ENABLE))
break; break;
gfn = data >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; gfn = data >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT;
if (kvm_write_guest(kvm, data, if (kvm_write_guest(kvm, gfn << HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT,
&tsc_ref, sizeof(tsc_ref))) &tsc_ref, sizeof(tsc_ref)))
return 1; return 1;
mark_page_dirty(kvm, gfn); mark_page_dirty(kvm, gfn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment