* [PATCH] kvm: fix hyperv tsc page clear wrong address [not found] <53A2BB7B.8070507@gmail.com> @ 2014-06-19 10:31 ` =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= 2014-06-19 11:17 ` =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= 0 siblings, 1 reply; 3+ messages in thread From: =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= @ 2014-06-19 10:31 UTC (permalink / raw) To: gleb, pbonzini, tglx, mingo, hpa; +Cc: x86, kvm, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1197 bytes --] >From 6010e24da995d4161cb879e98fda989e3cdb41c4 Mon Sep 17 00:00:00 2001 From: Xiaoming Gao <newtongao@tencent.com> Date: Thu, 19 Jun 2014 17:46:05 +0800 Subject: [PATCH] kvm: fix hyperv tsc page clear wrong address tsc page addr need clear the low HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT bits before kvm_write_guest write the zero tsc_ref structure to guest, or it will lead guest to get wrong clocksource. windows guest will get strong impact, QueryPerformanceCounter will always return 0 ,all things in windows rely on clock source will in serious chaos. Signed-off-by: Xiaoming Gao <newtongao@tencnet.com> --- arch/x86/kvm/x86.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f32a025..ed716cf 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1898,6 +1898,7 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data) if (!(data & HV_X64_MSR_TSC_REFERENCE_ENABLE)) break; gfn = data >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; + data &= ~((1 << HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT) - 1); if (kvm_write_guest(kvm, data, &tsc_ref, sizeof(tsc_ref))) return 1; -- 1.7.1 [-- Attachment #2: 0001-kvm-fix-hyperv-tsc-page-clear-wrong-address.patch --] [-- Type: text/plain, Size: 1196 bytes --] >From 6010e24da995d4161cb879e98fda989e3cdb41c4 Mon Sep 17 00:00:00 2001 From: Xiaoming Gao <newtongao@tencent.com> Date: Thu, 19 Jun 2014 17:46:05 +0800 Subject: [PATCH] kvm: fix hyperv tsc page clear wrong address tsc page addr need clear the low HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT bits before kvm_write_guest write the zero tsc_ref structure to guest, or it will lead guest to get wrong clocksource. windows guest will get strong impact, QueryPerformanceCounter will always return 0 ,all things in windows rely on clock source, will in serious chaos. Signed-off-by: Xiaoming Gao <newtongao@tencnet.com> --- arch/x86/kvm/x86.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f32a025..ed716cf 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1898,6 +1898,7 @@ static int set_msr_hyperv_pw(struct kvm_vcpu *vcpu, u32 msr, u64 data) if (!(data & HV_X64_MSR_TSC_REFERENCE_ENABLE)) break; gfn = data >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT; + data &= ~((1 << HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT) - 1); if (kvm_write_guest(kvm, data, &tsc_ref, sizeof(tsc_ref))) return 1; -- 1.7.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] kvm: fix hyperv tsc page clear wrong address 2014-06-19 10:31 ` [PATCH] kvm: fix hyperv tsc page clear wrong address =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= @ 2014-06-19 11:17 ` =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= 2014-06-19 11:22 ` Paolo Bonzini 0 siblings, 1 reply; 3+ messages in thread From: =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= @ 2014-06-19 11:17 UTC (permalink / raw) To: gleb, pbonzini, tglx, mingo, hpa; +Cc: x86, kvm, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1261 bytes --] This is more concisely >From 6ddeb18347f9dda0fe37702e0d067a4129a89b54 Mon Sep 17 00:00:00 2001 From: Xiaoming Gao <newtongao@tencent.com> Date: Thu, 19 Jun 2014 19:14:57 +0800 Subject: [PATCH] kvm: fix hyperv tsc page clear wrong address tsc page addr need clear the low HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT bits before kvm_write_guest write the zero tsc_ref structure to guest, or it will lead guest to get wrong clocksource. windows guest will get strong impact, QueryPerformanceCounter will always return 0 ,all things in windows rely on clock source, will in serious chaos. Signed-off-by: Xiaoming Gao <newtongao@tencnet.com> --- arch/x86/kvm/x86.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f32a025..f644933 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -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)) break; 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))) return 1; mark_page_dirty(kvm, gfn); -- 1.7.1 [-- Attachment #2: 0001-kvm-fix-hyperv-tsc-page-clear-wrong-address.patch --] [-- Type: text/plain, Size: 1237 bytes --] >From 6ddeb18347f9dda0fe37702e0d067a4129a89b54 Mon Sep 17 00:00:00 2001 From: Xiaoming Gao <newtongao@tencent.com> Date: Thu, 19 Jun 2014 19:14:57 +0800 Subject: [PATCH] kvm: fix hyperv tsc page clear wrong address tsc page addr need clear the low HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT bits before kvm_write_guest write the zero tsc_ref structure to guest, or it will lead guest to get wrong clocksource. windows guest will get strong impact, QueryPerformanceCounter will always return 0 ,all things in windows rely on clock source, will in serious chaos. Signed-off-by: Xiaoming Gao <newtongao@tencnet.com> --- arch/x86/kvm/x86.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f32a025..f644933 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -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)) break; 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))) return 1; mark_page_dirty(kvm, gfn); -- 1.7.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] kvm: fix hyperv tsc page clear wrong address 2014-06-19 11:17 ` =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?= @ 2014-06-19 11:22 ` Paolo Bonzini 0 siblings, 0 replies; 3+ messages in thread From: Paolo Bonzini @ 2014-06-19 11:22 UTC (permalink / raw) To: =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?=, gleb, tglx, mingo, hpa Cc: x86, kvm, linux-kernel [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=gb18030; format=flowed, Size: 1445 bytes --] Il 19/06/2014 13:17, "newtongao(¸ßСÃ÷)" ha scritto: > This is more concisely > > From 6ddeb18347f9dda0fe37702e0d067a4129a89b54 Mon Sep 17 00:00:00 2001 > From: Xiaoming Gao <newtongao@tencent.com> > Date: Thu, 19 Jun 2014 19:14:57 +0800 > Subject: [PATCH] kvm: fix hyperv tsc page clear wrong address > > tsc page addr need clear the low HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT bits > before kvm_write_guest write the zero tsc_ref structure to guest, or it will lead > guest to get wrong clocksource. > > windows guest will get strong impact, QueryPerformanceCounter will always return 0 > ,all things in windows rely on clock source, will in serious chaos. Right, this can happen if Windows passes a non-zero page to KVM. Thanks, Paolo > Signed-off-by: Xiaoming Gao <newtongao@tencnet.com> > --- > arch/x86/kvm/x86.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index f32a025..f644933 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -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)) > break; > 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))) > return 1; > mark_page_dirty(kvm, gfn); > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-06-19 11:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <53A2BB7B.8070507@gmail.com>
2014-06-19 10:31 ` [PATCH] kvm: fix hyperv tsc page clear wrong address =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?=
2014-06-19 11:17 ` =?gb18030?Q?=22newtongao=28=B8=DF=D0=A1=C3=F7=29=22?=
2014-06-19 11:22 ` Paolo Bonzini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox