Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On Fri, Mar 01, 2013 at 10:22:23AM +0100, Jiri Slaby wrote: > On 03/01/2013 08:50 AM, Christian Borntraeger wrote: > > On 28/02/13 23:26, Jiri Slaby wrote: > >> On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: > >>> 3.0-stable review patch. If anyone has any objections, please let me > >>> know. > >>> > >>> -- > >>> > >>> From: Christian Borntraeger > >>> > >>> commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. > >>> > >>> On store status we need to copy the current state of registers > >>> into a save area. Currently we might save stale versions: > >>> The sie state descriptor doesnt have fields for guest ACRS,FPRS, > >>> those registers are simply stored in the host registers. The host > >>> program must copy these away if needed. We do that in vcpu_put/load. > >>> > >>> If we now do a store status in KVM code between vcpu_put/load, the > >>> saved values are not up-to-date. Lets collect the ACRS/FPRS before > >>> saving them. > >>> > >>> This also fixes some strange problems with hotplug and virtio-ccw, > >>> since the low level machine check handler (on hotplug a machine check > >>> will happen) will revalidate all registers with the content of the > >>> save area. > >>> > >>> Signed-off-by: Christian Borntraeger > >>> Signed-off-by: Gleb Natapov > >>> Signed-off-by: Greg Kroah-Hartman > >>> > >>> --- > >>> arch/s390/kvm/kvm-s390.c |8 > >>> 1 file changed, 8 insertions(+) > >>> > >>> --- a/arch/s390/kvm/kvm-s390.c > >>> +++ b/arch/s390/kvm/kvm-s390.c > >>> @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv > >>> } else > >>> prefix = 0; > >>> > >>> + /* > >>> + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy > >>> + * copying in vcpu load/put. Lets update our copies before we save > >>> + * it into the save area > >>> + */ > >>> + save_fp_regs(>arch.guest_fpregs); > >>> + save_access_regs(vcpu->run->s.regs.acrs); > >> > >> kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this > >> fails with: > >> arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': > >> arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member > >> named 's' > >> > >> I believe the fix is just to remove save_access_regs, right? > > > > Before the sync reg changes, the ACRS were saved in the vcpu->arch. > > So the fix would look like > > > > save_access_regs(vcpu->arch.guest_acrs); > > Fix attached. Thanks, now applied. greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 03/01/2013 08:50 AM, Christian Borntraeger wrote: > On 28/02/13 23:26, Jiri Slaby wrote: >> On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: >>> 3.0-stable review patch. If anyone has any objections, please let me know. >>> >>> -- >>> >>> From: Christian Borntraeger >>> >>> commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. >>> >>> On store status we need to copy the current state of registers >>> into a save area. Currently we might save stale versions: >>> The sie state descriptor doesnt have fields for guest ACRS,FPRS, >>> those registers are simply stored in the host registers. The host >>> program must copy these away if needed. We do that in vcpu_put/load. >>> >>> If we now do a store status in KVM code between vcpu_put/load, the >>> saved values are not up-to-date. Lets collect the ACRS/FPRS before >>> saving them. >>> >>> This also fixes some strange problems with hotplug and virtio-ccw, >>> since the low level machine check handler (on hotplug a machine check >>> will happen) will revalidate all registers with the content of the >>> save area. >>> >>> Signed-off-by: Christian Borntraeger >>> Signed-off-by: Gleb Natapov >>> Signed-off-by: Greg Kroah-Hartman >>> >>> --- >>> arch/s390/kvm/kvm-s390.c |8 >>> 1 file changed, 8 insertions(+) >>> >>> --- a/arch/s390/kvm/kvm-s390.c >>> +++ b/arch/s390/kvm/kvm-s390.c >>> @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv >>> } else >>> prefix = 0; >>> >>> + /* >>> +* The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy >>> +* copying in vcpu load/put. Lets update our copies before we save >>> +* it into the save area >>> +*/ >>> + save_fp_regs(>arch.guest_fpregs); >>> + save_access_regs(vcpu->run->s.regs.acrs); >> >> kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this >> fails with: >> arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': >> arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member >> named 's' >> >> I believe the fix is just to remove save_access_regs, right? > > Before the sync reg changes, the ACRS were saved in the vcpu->arch. > So the fix would look like > > save_access_regs(vcpu->arch.guest_acrs); Fix attached. thanks, -- js suse labs From: Jiri Slaby Subject: s390/kvm: Fix store status for ACRS/FPRS fix Patch-mainline: no, submitted on 1st Mar 2013 In 3.0.67, commit 58c9ce6fad8e00d9726447f939fe7e78e2aec891 (s390/kvm: Fix store status for ACRS/FPRS), upstream commit 15bc8d8457875f495c59d933b05770ba88d1eacb, added a call to save_access_regs to save ACRS. But we do not have ARCS in kvm_run in 3.0 yet, so this results in: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' Fix it by saving guest_acrs which is where ARCS are in 3.0. Signed-off-by: Jiri Slaby --- arch/s390/kvm/kvm-s390.c |1 - 1 file changed, 1 deletion(-) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -590,7 +590,7 @@ int kvm_s390_vcpu_store_status(struct kv * it into the save area */ save_fp_regs(>arch.guest_fpregs); - save_access_regs(vcpu->run->s.regs.acrs); + save_access_regs(vcpu->arch.guest_acrs); if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu->arch.guest_fpregs.fprs, 128, prefix))
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 03/01/2013 08:50 AM, Christian Borntraeger wrote: On 28/02/13 23:26, Jiri Slaby wrote: On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: 3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger borntrae...@de.ibm.com commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com Signed-off-by: Gleb Natapov g...@redhat.com Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; + /* +* The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy +* copying in vcpu load/put. Lets update our copies before we save +* it into the save area +*/ + save_fp_regs(vcpu-arch.guest_fpregs); + save_access_regs(vcpu-run-s.regs.acrs); kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this fails with: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' I believe the fix is just to remove save_access_regs, right? Before the sync reg changes, the ACRS were saved in the vcpu-arch. So the fix would look like save_access_regs(vcpu-arch.guest_acrs); Fix attached. thanks, -- js suse labs From: Jiri Slaby jsl...@suse.cz Subject: s390/kvm: Fix store status for ACRS/FPRS fix Patch-mainline: no, submitted on 1st Mar 2013 In 3.0.67, commit 58c9ce6fad8e00d9726447f939fe7e78e2aec891 (s390/kvm: Fix store status for ACRS/FPRS), upstream commit 15bc8d8457875f495c59d933b05770ba88d1eacb, added a call to save_access_regs to save ACRS. But we do not have ARCS in kvm_run in 3.0 yet, so this results in: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' Fix it by saving guest_acrs which is where ARCS are in 3.0. Signed-off-by: Jiri Slaby jsl...@suse.cz --- arch/s390/kvm/kvm-s390.c |1 - 1 file changed, 1 deletion(-) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -590,7 +590,7 @@ int kvm_s390_vcpu_store_status(struct kv * it into the save area */ save_fp_regs(vcpu-arch.guest_fpregs); - save_access_regs(vcpu-run-s.regs.acrs); + save_access_regs(vcpu-arch.guest_acrs); if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu-arch.guest_fpregs.fprs, 128, prefix))
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On Fri, Mar 01, 2013 at 10:22:23AM +0100, Jiri Slaby wrote: On 03/01/2013 08:50 AM, Christian Borntraeger wrote: On 28/02/13 23:26, Jiri Slaby wrote: On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: 3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger borntrae...@de.ibm.com commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com Signed-off-by: Gleb Natapov g...@redhat.com Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; + /* + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy + * copying in vcpu load/put. Lets update our copies before we save + * it into the save area + */ + save_fp_regs(vcpu-arch.guest_fpregs); + save_access_regs(vcpu-run-s.regs.acrs); kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this fails with: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' I believe the fix is just to remove save_access_regs, right? Before the sync reg changes, the ACRS were saved in the vcpu-arch. So the fix would look like save_access_regs(vcpu-arch.guest_acrs); Fix attached. Thanks, now applied. greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 28/02/13 23:26, Jiri Slaby wrote: > On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: >> 3.0-stable review patch. If anyone has any objections, please let me know. >> >> -- >> >> From: Christian Borntraeger >> >> commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. >> >> On store status we need to copy the current state of registers >> into a save area. Currently we might save stale versions: >> The sie state descriptor doesnt have fields for guest ACRS,FPRS, >> those registers are simply stored in the host registers. The host >> program must copy these away if needed. We do that in vcpu_put/load. >> >> If we now do a store status in KVM code between vcpu_put/load, the >> saved values are not up-to-date. Lets collect the ACRS/FPRS before >> saving them. >> >> This also fixes some strange problems with hotplug and virtio-ccw, >> since the low level machine check handler (on hotplug a machine check >> will happen) will revalidate all registers with the content of the >> save area. >> >> Signed-off-by: Christian Borntraeger >> Signed-off-by: Gleb Natapov >> Signed-off-by: Greg Kroah-Hartman >> >> --- >> arch/s390/kvm/kvm-s390.c |8 >> 1 file changed, 8 insertions(+) >> >> --- a/arch/s390/kvm/kvm-s390.c >> +++ b/arch/s390/kvm/kvm-s390.c >> @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv >> } else >> prefix = 0; >> >> +/* >> + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy >> + * copying in vcpu load/put. Lets update our copies before we save >> + * it into the save area >> + */ >> +save_fp_regs(>arch.guest_fpregs); >> +save_access_regs(vcpu->run->s.regs.acrs); > > kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this > fails with: > arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': > arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member > named 's' > > I believe the fix is just to remove save_access_regs, right? Before the sync reg changes, the ACRS were saved in the vcpu->arch. So the fix would look like save_access_regs(vcpu->arch.guest_acrs); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: > 3.0-stable review patch. If anyone has any objections, please let me know. > > -- > > From: Christian Borntraeger > > commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. > > On store status we need to copy the current state of registers > into a save area. Currently we might save stale versions: > The sie state descriptor doesnt have fields for guest ACRS,FPRS, > those registers are simply stored in the host registers. The host > program must copy these away if needed. We do that in vcpu_put/load. > > If we now do a store status in KVM code between vcpu_put/load, the > saved values are not up-to-date. Lets collect the ACRS/FPRS before > saving them. > > This also fixes some strange problems with hotplug and virtio-ccw, > since the low level machine check handler (on hotplug a machine check > will happen) will revalidate all registers with the content of the > save area. > > Signed-off-by: Christian Borntraeger > Signed-off-by: Gleb Natapov > Signed-off-by: Greg Kroah-Hartman > > --- > arch/s390/kvm/kvm-s390.c |8 > 1 file changed, 8 insertions(+) > > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv > } else > prefix = 0; > > + /* > + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy > + * copying in vcpu load/put. Lets update our copies before we save > + * it into the save area > + */ > + save_fp_regs(>arch.guest_fpregs); > + save_access_regs(vcpu->run->s.regs.acrs); kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this fails with: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' I believe the fix is just to remove save_access_regs, right? thanks, -- js suse labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: 3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger borntrae...@de.ibm.com commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com Signed-off-by: Gleb Natapov g...@redhat.com Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; + /* + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy + * copying in vcpu load/put. Lets update our copies before we save + * it into the save area + */ + save_fp_regs(vcpu-arch.guest_fpregs); + save_access_regs(vcpu-run-s.regs.acrs); kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this fails with: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' I believe the fix is just to remove save_access_regs, right? thanks, -- js suse labs -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 17/53] s390/kvm: Fix store status for ACRS/FPRS
On 28/02/13 23:26, Jiri Slaby wrote: On 02/27/2013 12:57 AM, Greg Kroah-Hartman wrote: 3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger borntrae...@de.ibm.com commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com Signed-off-by: Gleb Natapov g...@redhat.com Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; +/* + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy + * copying in vcpu load/put. Lets update our copies before we save + * it into the save area + */ +save_fp_regs(vcpu-arch.guest_fpregs); +save_access_regs(vcpu-run-s.regs.acrs); kvm_run structure does not have kvm_sync_regs in it in 3.0 yet. So this fails with: arch/s390/kvm/kvm-s390.c: In function 'kvm_s390_vcpu_store_status': arch/s390/kvm/kvm-s390.c:593: error: 'struct kvm_run' has no member named 's' I believe the fix is just to remove save_access_regs, right? Before the sync reg changes, the ACRS were saved in the vcpu-arch. So the fix would look like save_access_regs(vcpu-arch.guest_acrs); -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[ 17/53] s390/kvm: Fix store status for ACRS/FPRS
3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger Signed-off-by: Gleb Natapov Signed-off-by: Greg Kroah-Hartman --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; + /* +* The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy +* copying in vcpu load/put. Lets update our copies before we save +* it into the save area +*/ + save_fp_regs(>arch.guest_fpregs); + save_access_regs(vcpu->run->s.regs.acrs); + if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu->arch.guest_fpregs.fprs, 128, prefix)) return -EFAULT; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[ 17/53] s390/kvm: Fix store status for ACRS/FPRS
3.0-stable review patch. If anyone has any objections, please let me know. -- From: Christian Borntraeger borntrae...@de.ibm.com commit 15bc8d8457875f495c59d933b05770ba88d1eacb upstream. On store status we need to copy the current state of registers into a save area. Currently we might save stale versions: The sie state descriptor doesnt have fields for guest ACRS,FPRS, those registers are simply stored in the host registers. The host program must copy these away if needed. We do that in vcpu_put/load. If we now do a store status in KVM code between vcpu_put/load, the saved values are not up-to-date. Lets collect the ACRS/FPRS before saving them. This also fixes some strange problems with hotplug and virtio-ccw, since the low level machine check handler (on hotplug a machine check will happen) will revalidate all registers with the content of the save area. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com Signed-off-by: Gleb Natapov g...@redhat.com Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/s390/kvm/kvm-s390.c |8 1 file changed, 8 insertions(+) --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -584,6 +584,14 @@ int kvm_s390_vcpu_store_status(struct kv } else prefix = 0; + /* +* The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy +* copying in vcpu load/put. Lets update our copies before we save +* it into the save area +*/ + save_fp_regs(vcpu-arch.guest_fpregs); + save_access_regs(vcpu-run-s.regs.acrs); + if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu-arch.guest_fpregs.fprs, 128, prefix)) return -EFAULT; -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/