[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH v2 14/21] qemu-kvm: Rework VCPU state writeback
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] Re: [PATCH v2 14/21] qemu-kvm: Rework VCPU state writeback API |
Date: |
Sun, 07 Feb 2010 14:51:19 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
Avi Kivity wrote:
> On 02/03/2010 10:53 AM, Jan Kiszka wrote:
>> This grand cleanup drops all reset and vmsave/load related
>> synchronization points in favor of four(!) generic hooks:
>>
>> - cpu_synchronize_all_states in qemu_savevm_state_complete
>> (initial sync from kernel before vmsave)
>> - cpu_synchronize_all_post_init in qemu_loadvm_state
>> (writeback after vmload)
>> - cpu_synchronize_all_post_init in main after machine init
>> - cpu_synchronize_all_post_reset in qemu_system_reset
>> (writeback after system reset)
>>
>> These writeback points + the existing one of VCPU exec after
>> cpu_synchronize_state map on three levels of writeback:
>>
>> - KVM_PUT_ASYNC_STATE (during runtime, other VCPUs continue to run)
>>
>
> Wouldn't that be SYNC_STATE (state that is modified by the current vcpu
> only)?
It's async /wrt other VCPUs. They continue to run and may interact with
this VCPU while updating its state.
>
>> - KVM_PUT_RESET_STATE (on synchronous system reset, all VCPUs stopped)
>> - KVM_PUT_FULL_STATE (on init or vmload, all VCPUs stopped as well)
>>
>> This level is passed to the arch-specific VCPU state writing function
>> that will decide which concrete substates need to be written. That way,
>> no writer of load, save or reset functions that interact with in-kernel
>> KVM states will ever have to worry about synchronization again. That
>> also means that a lot of reasons for races, segfaults and deadlocks are
>> eliminated.
>>
>> cpu_synchronize_state remains untouched, just as Anthony suggested. We
>> continue to need it before reading or writing of VCPU states that are
>> also tracked by in-kernel KVM subsystems.
>>
>> Consequently, this patch removes many cpu_synchronize_state calls that
>> are now redundant, just like remaining explicit register syncs. It does
>> not touch qemu-kvm's special hooks for mpstate, vcpu_events, or tsc
>> loading. They will be cleaned up by individual patches.
>>
>>
>
> I'm uneasy about this. What are the rules for putting
> cpu_synchronize_state() now?
As before for code that accesses the state during runtime: Before you
read or write some bit of it, call cpu_synchronize_state().
Only reset and save/restore handlers do not have to worry about
synchronization anymore. It makes no sense to overload them with
arch-specific KVM knowledge about what shall be written and when.
Jan
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v2 05/21] qemu-kvm: Use upstream kvm_enabled and cpu_synchronize_state, (continued)
- [Qemu-devel] [PATCH v2 05/21] qemu-kvm: Use upstream kvm_enabled and cpu_synchronize_state, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 20/21] qemu-kvm: Move kvm_set_boot_cpu_id, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 21/21] qemu-kvm: Bring qemu_init_vcpu back home, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 17/21] qemu-kvm: Use VCPU event state for reset and vmsave/load, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 15/21] qemu-kvm: Clean up mpstate synchronization, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 12/21] qemu-kvm: Use upstream kvm_vcpu_dirty, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 19/21] qemu-kvm: Clean up KVM's APIC hooks, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 13/21] qemu-kvm: Use upstream guest debug code, Jan Kiszka, 2010/02/03
- [Qemu-devel] [PATCH v2 14/21] qemu-kvm: Rework VCPU state writeback API, Jan Kiszka, 2010/02/03
[Qemu-devel] Re: [PATCH v2 00/21] qemu-kvm: Hook cleanups and extended use of upstream code, Marcelo Tosatti, 2010/02/03