Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:Maintenance:114
xen.openSUSE_Evergreen_11.4
25682-x86-inconsistent-io-state.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 25682-x86-inconsistent-io-state.patch of Package xen.openSUSE_Evergreen_11.4
# HG changeset patch # User Jan Beulich <jbeulich@suse.com> # Date 1343317911 -3600 # Node ID ffcb24876b4f2e3c24be7db2a20318df81b0fc6c # Parent c29feacecfc4b0564b364adf0fd9c8bf19e250d8 x86/hvm: don't leave emulator in inconsistent state The fact that handle_mmio(), and thus the instruction emulator, is being run through twice for emulations that require involvement of the device model, allows for the second run to see a different guest state than the first one. Since only the MMIO-specific emulation routines update the vCPU's io_state, if they get invoked on the second pass, internal state (and particularly this variable) can be left in a state making successful emulation of a subsequent MMIO operation impossible. Consequently, whenever the emulator invocation returns without requesting a retry of the guest instruction, reset io_state. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com> --- a/xen/arch/x86/hvm/io.c +++ b/xen/arch/x86/hvm/io.c @@ -176,6 +176,8 @@ int handle_mmio(void) rc = hvm_emulate_one(&ctxt); + if ( rc != X86EMUL_RETRY ) + curr->arch.hvm_vcpu.io_state = HVMIO_none; if ( curr->arch.hvm_vcpu.io_state == HVMIO_awaiting_completion ) curr->arch.hvm_vcpu.io_state = HVMIO_handle_mmio_awaiting_completion; else
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor