* [PATCH 00/10] Clean up vcpu context structure
@ 2009-10-09 18:03 Glauber Costa
2009-10-09 18:03 ` [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test Glauber Costa
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw)
To: kvm; +Cc: avi
This series aims at cleanin up vcpu_context structure. I am not removing yet
the fd field, because it is used in the ioctls, and I want to do it separadedly.
But after this series, this structure exists only as a way to hold the file descriptor,
and is, much cleaner, and much closer to upstream qemu than before.
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test 2009-10-09 18:03 [PATCH 00/10] Clean up vcpu context structure Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 02/10] drop kvm_mmio_read and write Glauber Costa 2009-10-12 9:24 ` [PATCH 00/10] Clean up " Avi Kivity 2009-10-13 17:04 ` Marcelo Tosatti 2 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi Upstream now has tests for irqchip_in_kernel. It differs from our signature, as it does not take any parameter. For consistency, convert our usage. Also, use a field in KVMState to store it, so we can have the exact same function as qemu upstream does. Signed-off-by: Glauber Costa <glommer@redhat.com> --- exec.c | 2 +- hw/apic.c | 10 +++++----- hw/ioapic.c | 6 +++--- hw/msix.c | 12 ++++++------ hw/pc.c | 2 +- hw/pci.c | 2 +- kvm-all.c | 2 ++ qemu-kvm-x86.c | 8 ++++---- qemu-kvm.c | 10 +++------- qemu-kvm.h | 13 ++++--------- 10 files changed, 30 insertions(+), 37 deletions(-) diff --git a/exec.c b/exec.c index 24956cf..fcffb0f 100644 --- a/exec.c +++ b/exec.c @@ -1570,7 +1570,7 @@ void cpu_interrupt(CPUState *env, int mask) old_mask = env->interrupt_request; env->interrupt_request |= mask; - if (kvm_enabled() && !qemu_kvm_irqchip_in_kernel()) + if (kvm_enabled() && !kvm_irqchip_in_kernel()) kvm_update_interrupt_request(env); #ifndef CONFIG_USER_ONLY diff --git a/hw/apic.c b/hw/apic.c index 2952675..b8fe529 100644 --- a/hw/apic.c +++ b/hw/apic.c @@ -301,7 +301,7 @@ void cpu_set_apic_base(CPUState *env, uint64_t val) #endif if (!s) return; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) + if (kvm_enabled() && kvm_irqchip_in_kernel()) s->apicbase = val; else s->apicbase = (val & 0xfffff000) | @@ -509,7 +509,7 @@ void apic_init_reset(CPUState *env) env->halted = !(s->apicbase & MSR_IA32_APICBASE_BSP); #ifdef KVM_CAP_MP_STATE - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { env->mp_state = env->halted ? KVM_MP_STATE_UNINITIALIZED : KVM_MP_STATE_RUNNABLE; } @@ -961,7 +961,7 @@ static void kvm_kernel_lapic_load_from_user(APICState *s) void qemu_kvm_load_lapic(CPUState *env) { #ifdef KVM_CAP_IRQCHIP - if (kvm_enabled() && kvm_vcpu_inited(env) && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_vcpu_inited(env) && kvm_irqchip_in_kernel()) { kvm_kernel_lapic_load_from_user(env->apic_state); } #endif @@ -972,7 +972,7 @@ static void apic_pre_save(void *opaque) #ifdef KVM_CAP_IRQCHIP APICState *s = (void *)opaque; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_kernel_lapic_save_to_user(s); } #endif @@ -983,7 +983,7 @@ static int apic_post_load(void *opaque, int version_id) #ifdef KVM_CAP_IRQCHIP APICState *s = opaque; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_kernel_lapic_load_from_user(s); } #endif diff --git a/hw/ioapic.c b/hw/ioapic.c index cd62395..a66325d 100644 --- a/hw/ioapic.c +++ b/hw/ioapic.c @@ -244,7 +244,7 @@ static void ioapic_pre_save(void *opaque) { IOAPICState *s = (void *)opaque; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_kernel_ioapic_save_to_user(s); } } @@ -263,7 +263,7 @@ static int ioapic_post_load(void *opaque, int version_id) { IOAPICState *s = opaque; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_kernel_ioapic_load_from_user(s); } return 0; @@ -297,7 +297,7 @@ static void ioapic_reset(void *opaque) for(i = 0; i < IOAPIC_NUM_PINS; i++) s->ioredtbl[i] = 1 << 16; /* mask LVT */ #ifdef KVM_CAP_IRQCHIP - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_kernel_ioapic_load_from_user(s); } #endif diff --git a/hw/msix.c b/hw/msix.c index b68fb5f..c1e5eb8 100644 --- a/hw/msix.c +++ b/hw/msix.c @@ -221,7 +221,7 @@ static int msix_add_config(struct PCIDevice *pdev, unsigned short nentries, static void msix_free_irq_entries(PCIDevice *dev) { int vector; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_msix_free(dev); } @@ -298,7 +298,7 @@ static void msix_mmio_writel(void *opaque, target_phys_addr_t addr, int vector = offset / MSIX_ENTRY_SIZE; int was_masked = msix_is_masked(dev, vector); memcpy(dev->msix_table_page + offset, &val, 4); - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_msix_update(dev, vector, was_masked, msix_is_masked(dev, vector)); } if (!msix_is_masked(dev, vector) && msix_is_pending(dev, vector)) { @@ -354,7 +354,7 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries, return -EINVAL; #ifdef KVM_CAP_IRQCHIP - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { dev->msix_irq_entries = qemu_malloc(nentries * sizeof *dev->msix_irq_entries); } @@ -478,7 +478,7 @@ void msix_notify(PCIDevice *dev, unsigned vector) } #ifdef KVM_CAP_IRQCHIP - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_set_irq(dev->msix_irq_entries[vector].gsi, 1, NULL); return; } @@ -516,7 +516,7 @@ int msix_vector_use(PCIDevice *dev, unsigned vector) if (dev->msix_entry_used[vector]) { return 0; } - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { ret = kvm_msix_add(dev, vector); if (ret) { return ret; @@ -531,7 +531,7 @@ void msix_vector_unuse(PCIDevice *dev, unsigned vector) { if (vector < dev->msix_entries_nr && dev->msix_entry_used[vector]) { --dev->msix_entry_used[vector]; - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_msix_del(dev, vector); } } diff --git a/hw/pc.c b/hw/pc.c index f504f0b..9f53c97 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1288,7 +1288,7 @@ static void pc_init1(ram_addr_t ram_size, cpu_irq = qemu_allocate_irqs(pic_irq_request, NULL, 1); #ifdef KVM_CAP_IRQCHIP - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) { + if (kvm_enabled() && kvm_irqchip_in_kernel()) { isa_irq_state = qemu_mallocz(sizeof(*isa_irq_state)); isa_irq = i8259 = kvm_i8259_init(cpu_irq[0]); } else diff --git a/hw/pci.c b/hw/pci.c index 4472910..5f6bae0 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -679,7 +679,7 @@ void pci_default_write_config(PCIDevice *d, uint32_t addr, uint32_t val, int l) } #ifdef CONFIG_KVM_DEVICE_ASSIGNMENT - if (kvm_enabled() && qemu_kvm_irqchip_in_kernel() && + if (kvm_enabled() && kvm_irqchip_in_kernel() && addr >= PIIX_CONFIG_IRQ_ROUTE && addr < PIIX_CONFIG_IRQ_ROUTE + 4) assigned_dev_update_irqs(); diff --git a/kvm-all.c b/kvm-all.c index b2651df..1356aa8 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -155,12 +155,14 @@ static void kvm_reset_vcpu(void *opaque) abort(); } } +#endif int kvm_irqchip_in_kernel(void) { return kvm_state->irqchip_in_kernel; } +#ifdef KVM_UPSTREAM int kvm_pit_in_kernel(void) { return kvm_state->pit_in_kernel; diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index acb1b91..a44ae67 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -284,7 +284,7 @@ int kvm_destroy_memory_alias(kvm_context_t kvm, uint64_t phys_start) int kvm_get_lapic(kvm_vcpu_context_t vcpu, struct kvm_lapic_state *s) { int r; - if (!kvm_irqchip_in_kernel(vcpu->kvm)) + if (!kvm_irqchip_in_kernel()) return 0; r = ioctl(vcpu->fd, KVM_GET_LAPIC, s); if (r == -1) { @@ -297,7 +297,7 @@ int kvm_get_lapic(kvm_vcpu_context_t vcpu, struct kvm_lapic_state *s) int kvm_set_lapic(kvm_vcpu_context_t vcpu, struct kvm_lapic_state *s) { int r; - if (!kvm_irqchip_in_kernel(vcpu->kvm)) + if (!kvm_irqchip_in_kernel()) return 0; r = ioctl(vcpu->fd, KVM_SET_LAPIC, s); if (r == -1) { @@ -1376,7 +1376,7 @@ int kvm_arch_halt(void *opaque, kvm_vcpu_context_t vcpu) void kvm_arch_pre_kvm_run(void *opaque, CPUState *env) { - if (!kvm_irqchip_in_kernel(kvm_context)) + if (!kvm_irqchip_in_kernel()) kvm_set_cr8(env->kvm_cpu_state.vcpu_ctx, cpu_get_apic_tpr(env)); } @@ -1440,7 +1440,7 @@ void kvm_arch_cpu_reset(CPUState *env) { kvm_arch_load_regs(env); if (!cpu_is_bsp(env)) { - if (kvm_irqchip_in_kernel(kvm_context)) { + if (kvm_irqchip_in_kernel()) { #ifdef KVM_CAP_MP_STATE kvm_reset_mpstate(env->kvm_cpu_state.vcpu_ctx); #endif diff --git a/qemu-kvm.c b/qemu-kvm.c index a4a90ed..6bda694 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -558,6 +558,7 @@ void kvm_create_irqchip(kvm_context_t kvm) } } #endif + kvm_state->irqchip_in_kernel = kvm->irqchip_in_kernel; } int kvm_create(kvm_context_t kvm, unsigned long phys_mem_bytes, void **vm_mem) @@ -1109,11 +1110,6 @@ int kvm_set_signal_mask(kvm_vcpu_context_t vcpu, const sigset_t *sigset) return r; } -int kvm_irqchip_in_kernel(kvm_context_t kvm) -{ - return kvm->irqchip_in_kernel; -} - int kvm_pit_in_kernel(kvm_context_t kvm) { return kvm->pit_in_kernel; @@ -1610,7 +1606,7 @@ void kvm_arch_get_registers(CPUState *env) kvm_arch_save_regs(env); kvm_arch_save_mpstate(env); #ifdef KVM_CAP_MP_STATE - if (kvm_irqchip_in_kernel(kvm_context)) + if (kvm_irqchip_in_kernel()) env->halted = (env->mp_state == KVM_MP_STATE_HALTED); #endif } @@ -1967,7 +1963,7 @@ static int kvm_main_loop_cpu(CPUState *env) while (1) { int run_cpu = !is_cpu_stopped(env); - if (run_cpu && !kvm_irqchip_in_kernel(kvm_context)) { + if (run_cpu && !kvm_irqchip_in_kernel()) { process_irqchip_events(env); run_cpu = !env->halted; } diff --git a/qemu-kvm.h b/qemu-kvm.h index 05b025f..e957e96 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -553,13 +553,6 @@ int kvm_dirty_pages_log_enable_all(kvm_context_t kvm); */ int kvm_dirty_pages_log_reset(kvm_context_t kvm); -/*! - * \brief Query whether in kernel irqchip is used - * - * \param kvm Pointer to the current kvm_context - */ -int kvm_irqchip_in_kernel(kvm_context_t kvm); - #ifdef KVM_CAP_IRQCHIP /*! * \brief Dump in kernel IRQCHIP contents @@ -1122,7 +1115,6 @@ int handle_tpr_access(void *opaque, kvm_vcpu_context_t vcpu, uint64_t rip, int kvm_has_sync_mmu(void); #define kvm_enabled() (kvm_allowed) -#define qemu_kvm_irqchip_in_kernel() kvm_irqchip_in_kernel(kvm_context) #define qemu_kvm_pit_in_kernel() kvm_pit_in_kernel(kvm_context) #define qemu_kvm_has_gsi_routing() kvm_has_gsi_routing(kvm_context) #ifdef TARGET_I386 @@ -1134,7 +1126,6 @@ void kvm_load_tsc(CPUState *env); #define kvm_has_sync_mmu() (0) #define kvm_enabled() (0) #define kvm_nested 0 -#define qemu_kvm_irqchip_in_kernel() (0) #define qemu_kvm_pit_in_kernel() (0) #define qemu_kvm_has_gsi_routing() (0) #ifndef QEMU_KVM_NO_CPU @@ -1210,6 +1201,8 @@ static inline int kvm_set_migration_log(int enable) return kvm_physical_memory_set_dirty_tracking(enable); } + +int kvm_irqchip_in_kernel(void); #ifdef CONFIG_KVM typedef struct KVMSlot { @@ -1232,6 +1225,8 @@ typedef struct KVMState { #ifdef KVM_CAP_SET_GUEST_DEBUG struct kvm_sw_breakpoint_head kvm_sw_breakpoints; #endif + int irqchip_in_kernel; + struct kvm_context kvm_context; } KVMState; -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 02/10] drop kvm_mmio_read and write 2009-10-09 18:03 ` [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 03/10] remove unneded opaque Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi they are just a tiny wrapper around qemu memory functions. Drop' em Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-x86.c | 7 +------ qemu-kvm.c | 24 ++++-------------------- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index a44ae67..e8ec59d 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -364,7 +364,6 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) unsigned char code; char code_str[SHOW_CODE_LEN * 3 + 1]; unsigned long rip; - kvm_context_t kvm = vcpu->kvm; r = ioctl(fd, KVM_GET_SREGS, &sregs); if (r == -1) { @@ -384,11 +383,7 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) for (n = -back_offset; n < SHOW_CODE_LEN-back_offset; ++n) { if (n == 0) strcat(code_str, " -->"); - r = kvm_mmio_read(kvm->opaque, rip + n, &code, 1); - if (r < 0) { - strcat(code_str, " xx"); - continue; - } + cpu_physical_memory_rw(rip + n, &code, 1, 1); sprintf(code_str + strlen(code_str), " %02x", code); } fprintf(stderr, "code:%s\n", code_str); diff --git a/qemu-kvm.c b/qemu-kvm.c index 6bda694..4ad6856 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -111,18 +111,6 @@ static int kvm_debug(void *opaque, void *data, } #endif -int kvm_mmio_read(void *opaque, uint64_t addr, uint8_t *data, int len) -{ - cpu_physical_memory_rw(addr, data, len, 0); - return 0; -} - -int kvm_mmio_write(void *opaque, uint64_t addr, uint8_t *data, int len) -{ - cpu_physical_memory_rw(addr, data, len, 1); - return 0; -} - static int handle_unhandled(uint64_t reason) { fprintf(stderr, "kvm: unhandled exit %" PRIx64 "\n", reason); @@ -891,7 +879,6 @@ int kvm_set_mpstate(kvm_vcpu_context_t vcpu, struct kvm_mp_state *mp_state) static int handle_mmio(kvm_vcpu_context_t vcpu) { unsigned long addr = vcpu->run->mmio.phys_addr; - kvm_context_t kvm = vcpu->kvm; struct kvm_run *kvm_run = vcpu->run; void *data = kvm_run->mmio.data; @@ -899,10 +886,8 @@ static int handle_mmio(kvm_vcpu_context_t vcpu) if ((addr > 0xa0000 - 4 && addr <= 0xa0000) && kvm_run->mmio.len == 3) return 0; - if (kvm_run->mmio.is_write) - return kvm_mmio_write(kvm->opaque, addr, data, kvm_run->mmio.len); - else - return kvm_mmio_read(kvm->opaque, addr, data, kvm_run->mmio.len); + cpu_physical_memory_rw(addr, data, kvm_run->mmio.len, kvm_run->mmio.is_write); + return 0; } int handle_io_window(kvm_context_t kvm) @@ -994,10 +979,9 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) struct kvm_coalesced_mmio_ring *ring = (void *) run + kvm_state->coalesced_mmio * PAGE_SIZE; while (ring->first != ring->last) { - kvm_mmio_write(kvm->opaque, - ring->coalesced_mmio[ring->first].phys_addr, + cpu_physical_memory_rw(ring->coalesced_mmio[ring->first].phys_addr, &ring->coalesced_mmio[ring->first].data[0], - ring->coalesced_mmio[ring->first].len); + ring->coalesced_mmio[ring->first].len, 1); smp_wmb(); ring->first = (ring->first + 1) % KVM_COALESCED_MMIO_MAX; } -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 03/10] remove unneded opaque. 2009-10-09 18:03 ` [PATCH 02/10] drop kvm_mmio_read and write Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 04/10] remove kvm_context from vpcu structure Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi kvm_debug() and kvm_arch_halt() both take an opaque field for no reason, since it is totally unused. kvm_halt() itself is just a wrapper around kvm_arch_halt(), and is removed. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-ia64.c | 2 +- qemu-kvm-x86.c | 2 +- qemu-kvm.c | 13 +++---------- qemu-kvm.h | 2 +- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/qemu-kvm-ia64.c b/qemu-kvm-ia64.c index d26c2a9..a11fde8 100644 --- a/qemu-kvm-ia64.c +++ b/qemu-kvm-ia64.c @@ -30,7 +30,7 @@ int kvm_arch_init_vcpu(CPUState *cenv) return 0; } -int kvm_arch_halt(void *opaque, kvm_vcpu_context_t vcpu) +int kvm_arch_halt(kvm_vcpu_context_t vcpu) { CPUState *env = cpu_single_env; env->hflags |= HF_HALTED_MASK; diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index e8ec59d..7546fcb 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -1357,7 +1357,7 @@ int kvm_arch_init_vcpu(CPUState *cenv) return 0; } -int kvm_arch_halt(void *opaque, kvm_vcpu_context_t vcpu) +int kvm_arch_halt(kvm_vcpu_context_t vcpu) { CPUState *env = cpu_single_env; diff --git a/qemu-kvm.c b/qemu-kvm.c index 4ad6856..b92a68e 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -97,11 +97,10 @@ int kvm_abi = EXPECTED_KVM_API_VERSION; int kvm_page_size; #ifdef KVM_CAP_SET_GUEST_DEBUG -static int kvm_debug(void *opaque, void *data, +static int kvm_debug(CPUState *env, struct kvm_debug_exit_arch *arch_info) { int handle = kvm_arch_debug(arch_info); - CPUState *env = data; if (handle) { kvm_debug_cpu_requested = env; @@ -816,9 +815,8 @@ int handle_debug(kvm_vcpu_context_t vcpu, void *env) { #ifdef KVM_CAP_SET_GUEST_DEBUG struct kvm_run *run = vcpu->run; - kvm_context_t kvm = vcpu->kvm; - return kvm_debug(kvm->opaque, env, &run->debug.arch); + return kvm_debug(env, &run->debug.arch); #else return 0; #endif @@ -895,11 +893,6 @@ int handle_io_window(kvm_context_t kvm) return 1; } -int handle_halt(kvm_vcpu_context_t vcpu) -{ - return kvm_arch_halt(vcpu->kvm->opaque, vcpu); -} - int handle_shutdown(kvm_context_t kvm, CPUState *env) { /* stop the current vcpu from going back to guest mode */ @@ -1019,7 +1012,7 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) r = handle_mmio(vcpu); break; case KVM_EXIT_HLT: - r = handle_halt(vcpu); + r = kvm_arch_halt(vcpu); break; case KVM_EXIT_IRQ_WINDOW_OPEN: break; diff --git a/qemu-kvm.h b/qemu-kvm.h index e957e96..e51dd2c 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -1109,7 +1109,7 @@ struct ioperm_data { }; void qemu_kvm_cpu_stop(CPUState *env); -int kvm_arch_halt(void *opaque, kvm_vcpu_context_t vcpu); +int kvm_arch_halt(kvm_vcpu_context_t vcpu); int handle_tpr_access(void *opaque, kvm_vcpu_context_t vcpu, uint64_t rip, int is_write); int kvm_has_sync_mmu(void); -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 04/10] remove kvm_context from vpcu structure 2009-10-09 18:03 ` [PATCH 03/10] remove unneded opaque Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 05/10] Use kvm_run inside CPUState Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi It is not used anywhere, so just blow it away. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm.c | 4 +--- qemu-kvm.h | 1 - 2 files changed, 1 insertions(+), 4 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index b92a68e..5c7376d 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -441,9 +441,7 @@ kvm_vcpu_context_t kvm_create_vcpu(CPUState *env, int id) long mmap_size; int r; kvm_vcpu_context_t vcpu_ctx = qemu_malloc(sizeof(struct kvm_vcpu_context)); - kvm_context_t kvm = kvm_context; - vcpu_ctx->kvm = kvm; vcpu_ctx->id = id; r = kvm_vm_ioctl(kvm_state, KVM_CREATE_VCPU, id); @@ -938,8 +936,8 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) int r; int fd = vcpu->fd; struct kvm_run *run = vcpu->run; - kvm_context_t kvm = vcpu->kvm; CPUState *_env = env; + kvm_context_t kvm = &_env->kvm_state->kvm_context; again: push_nmi(kvm); diff --git a/qemu-kvm.h b/qemu-kvm.h index e51dd2c..4dfd5ea 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -79,7 +79,6 @@ struct kvm_context { struct kvm_vcpu_context { int fd; struct kvm_run *run; - struct kvm_context *kvm; uint32_t id; }; -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 05/10] Use kvm_run inside CPUState. 2009-10-09 18:03 ` [PATCH 04/10] remove kvm_context from vpcu structure Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 06/10] make some functions static Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi There is no need to replicate kvm_run inside vcpu context, since there is already a field dedicated to that in CPUState. For now, keep both on, so function can be converted slowly, since a lot of function headers will be changed to take an env parameter, instead of a vcpu one. This patch also converts functions that are static to this file as a first step. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm.c | 27 +++++++++++++++------------ qemu-kvm.h | 1 - 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index 5c7376d..a7eda2d 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -459,13 +459,16 @@ kvm_vcpu_context_t kvm_create_vcpu(CPUState *env, int id) fprintf(stderr, "get vcpu mmap size: %m\n"); goto err_fd; } - vcpu_ctx->run = + env->kvm_run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, vcpu_ctx->fd, 0); - if (vcpu_ctx->run == MAP_FAILED) { + if (env->kvm_run == MAP_FAILED) { fprintf(stderr, "mmap vcpu area: %m\n"); goto err_fd; } + + vcpu_ctx->run = env->kvm_run; + return vcpu_ctx; err_fd: close(vcpu_ctx->fd); @@ -757,9 +760,9 @@ int kvm_set_irqchip(kvm_context_t kvm, struct kvm_irqchip *chip) #endif -static int handle_io(kvm_vcpu_context_t vcpu) +static int handle_io(CPUState *env) { - struct kvm_run *run = vcpu->run; + struct kvm_run *run = env->kvm_run; uint16_t addr = run->io.port; int i; void *p = (void *) run + run->io.data_offset; @@ -809,10 +812,10 @@ static int handle_io(kvm_vcpu_context_t vcpu) return 0; } -int handle_debug(kvm_vcpu_context_t vcpu, void *env) +static int handle_debug(CPUState *env) { #ifdef KVM_CAP_SET_GUEST_DEBUG - struct kvm_run *run = vcpu->run; + struct kvm_run *run = env->kvm_run; return kvm_debug(env, &run->debug.arch); #else @@ -872,10 +875,10 @@ int kvm_set_mpstate(kvm_vcpu_context_t vcpu, struct kvm_mp_state *mp_state) } #endif -static int handle_mmio(kvm_vcpu_context_t vcpu) +static int handle_mmio(CPUState *env) { - unsigned long addr = vcpu->run->mmio.phys_addr; - struct kvm_run *kvm_run = vcpu->run; + unsigned long addr = env->kvm_run->mmio.phys_addr; + struct kvm_run *kvm_run = env->kvm_run; void *data = kvm_run->mmio.data; /* hack: Red Hat 7.1 generates these weird accesses. */ @@ -1001,13 +1004,13 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) abort(); break; case KVM_EXIT_IO: - r = handle_io(vcpu); + r = handle_io(env); break; case KVM_EXIT_DEBUG: - r = handle_debug(vcpu, env); + r = handle_debug(env); break; case KVM_EXIT_MMIO: - r = handle_mmio(vcpu); + r = handle_mmio(env); break; case KVM_EXIT_HLT: r = kvm_arch_halt(vcpu); diff --git a/qemu-kvm.h b/qemu-kvm.h index 4dfd5ea..3bc483e 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -106,7 +106,6 @@ int handle_shutdown(kvm_context_t kvm, CPUState *env); void post_kvm_run(kvm_context_t kvm, CPUState *env); int pre_kvm_run(kvm_context_t kvm, CPUState *env); int handle_io_window(kvm_context_t kvm); -int handle_debug(kvm_vcpu_context_t vcpu, void *env); int try_push_interrupts(kvm_context_t kvm); #if defined(__x86_64__) || defined(__i386__) -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 06/10] make some functions static 2009-10-09 18:03 ` [PATCH 05/10] Use kvm_run inside CPUState Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 07/10] use env as parameter for functions that access kvm_run Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi Some functions that uses kvm_run are not static, but should be. Make them static, and make them get a CPUState parameter in the process. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-x86.c | 18 +++++++++--------- qemu-kvm.h | 33 --------------------------------- 2 files changed, 9 insertions(+), 42 deletions(-) diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index 7546fcb..10bd530 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -538,19 +538,19 @@ void kvm_show_regs(kvm_vcpu_context_t vcpu) sregs.efer); } -uint64_t kvm_get_apic_base(kvm_vcpu_context_t vcpu) +static uint64_t kvm_get_apic_base(CPUState *env) { - return vcpu->run->apic_base; + return env->kvm_run->apic_base; } -void kvm_set_cr8(kvm_vcpu_context_t vcpu, uint64_t cr8) +static void kvm_set_cr8(CPUState *env, uint64_t cr8) { - vcpu->run->cr8 = cr8; + env->kvm_run->cr8 = cr8; } -__u64 kvm_get_cr8(kvm_vcpu_context_t vcpu) +static __u64 kvm_get_cr8(CPUState *env) { - return vcpu->run->cr8; + return env->kvm_run->cr8; } int kvm_setup_cpuid(kvm_vcpu_context_t vcpu, int nent, @@ -1372,7 +1372,7 @@ int kvm_arch_halt(kvm_vcpu_context_t vcpu) void kvm_arch_pre_kvm_run(void *opaque, CPUState *env) { if (!kvm_irqchip_in_kernel()) - kvm_set_cr8(env->kvm_cpu_state.vcpu_ctx, cpu_get_apic_tpr(env)); + kvm_set_cr8(env, cpu_get_apic_tpr(env)); } void kvm_arch_post_kvm_run(void *opaque, CPUState *env) @@ -1382,8 +1382,8 @@ void kvm_arch_post_kvm_run(void *opaque, CPUState *env) env->eflags = kvm_get_interrupt_flag(env->kvm_cpu_state.vcpu_ctx) ? env->eflags | IF_MASK : env->eflags & ~IF_MASK; - cpu_set_apic_tpr(env, kvm_get_cr8(env->kvm_cpu_state.vcpu_ctx)); - cpu_set_apic_base(env, kvm_get_apic_base(env->kvm_cpu_state.vcpu_ctx)); + cpu_set_apic_tpr(env, kvm_get_cr8(env)); + cpu_set_apic_base(env, kvm_get_apic_base(env)); } int kvm_arch_has_work(CPUState *env) diff --git a/qemu-kvm.h b/qemu-kvm.h index 3bc483e..1f23fe4 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -219,17 +219,6 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env); int kvm_get_interrupt_flag(kvm_vcpu_context_t vcpu); /*! - * \brief Get the value of the APIC_BASE msr as of last exit to userspace - * - * This gets the APIC_BASE msr as it was on the last exit to userspace. - * - * \param kvm Pointer to the current kvm_context - * \param vcpu Which virtual CPU should get dumped - * \return APIC_BASE msr contents - */ -uint64_t kvm_get_apic_base(kvm_vcpu_context_t vcpu); - -/*! * \brief Check if a vcpu is ready for interrupt injection * * This checks if vcpu interrupts are not masked by mov ss or sti. @@ -422,28 +411,6 @@ int kvm_set_shadow_pages(kvm_context_t kvm, unsigned int nrshadow_pages); */ int kvm_get_shadow_pages(kvm_context_t kvm, unsigned int *nrshadow_pages); -/*! - * \brief Set up cr8 for next time the vcpu is executed - * - * This is a fast setter for cr8, which will be applied when the - * vcpu next enters guest mode. - * - * \param kvm Pointer to the current kvm_context - * \param vcpu Which virtual CPU should get dumped - * \param cr8 next cr8 value - */ -void kvm_set_cr8(kvm_vcpu_context_t vcpu, uint64_t cr8); - -/*! - * \brief Get cr8 for sync tpr in qemu apic emulation - * - * This is a getter for cr8, which used to sync with the tpr in qemu - * apic emualtion. - * - * \param kvm Pointer to the current kvm_context - * \param vcpu Which virtual CPU should get dumped - */ -__u64 kvm_get_cr8(kvm_vcpu_context_t vcpu); #endif /*! -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 07/10] use env as parameter for functions that access kvm_run 2009-10-09 18:03 ` [PATCH 06/10] make some functions static Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 08/10] use env in kvm_arch_run Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi Convert header of public functions that access kvm_run, so they can use CPUState version instead. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-x86.c | 4 ++-- qemu-kvm.c | 8 ++++---- qemu-kvm.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index 10bd530..c5455d7 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -1379,7 +1379,7 @@ void kvm_arch_post_kvm_run(void *opaque, CPUState *env) { cpu_single_env = env; - env->eflags = kvm_get_interrupt_flag(env->kvm_cpu_state.vcpu_ctx) + env->eflags = kvm_get_interrupt_flag(env) ? env->eflags | IF_MASK : env->eflags & ~IF_MASK; cpu_set_apic_tpr(env, kvm_get_cr8(env)); @@ -1400,7 +1400,7 @@ int kvm_arch_try_push_interrupts(void *opaque) CPUState *env = cpu_single_env; int r, irq; - if (kvm_is_ready_for_interrupt_injection(env->kvm_cpu_state.vcpu_ctx) && + if (kvm_is_ready_for_interrupt_injection(env) && (env->interrupt_request & CPU_INTERRUPT_HARD) && (env->eflags & IF_MASK)) { env->interrupt_request &= ~CPU_INTERRUPT_HARD; diff --git a/qemu-kvm.c b/qemu-kvm.c index a7eda2d..bd1c0b5 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -924,14 +924,14 @@ int pre_kvm_run(kvm_context_t kvm, CPUState *env) return 0; } -int kvm_get_interrupt_flag(kvm_vcpu_context_t vcpu) +int kvm_get_interrupt_flag(CPUState *env) { - return vcpu->run->if_flag; + return env->kvm_run->if_flag; } -int kvm_is_ready_for_interrupt_injection(kvm_vcpu_context_t vcpu) +int kvm_is_ready_for_interrupt_injection(CPUState *env) { - return vcpu->run->ready_for_interrupt_injection; + return env->kvm_run->ready_for_interrupt_injection; } int kvm_run(kvm_vcpu_context_t vcpu, void *env) diff --git a/qemu-kvm.h b/qemu-kvm.h index 1f23fe4..28940dd 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -216,7 +216,7 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env); * \param vcpu Which virtual CPU should get dumped * \return interrupt flag value (0 or 1) */ -int kvm_get_interrupt_flag(kvm_vcpu_context_t vcpu); +int kvm_get_interrupt_flag(CPUState *env); /*! * \brief Check if a vcpu is ready for interrupt injection @@ -227,7 +227,7 @@ int kvm_get_interrupt_flag(kvm_vcpu_context_t vcpu); * \param vcpu Which virtual CPU should get dumped * \return boolean indicating interrupt injection readiness */ -int kvm_is_ready_for_interrupt_injection(kvm_vcpu_context_t vcpu); +int kvm_is_ready_for_interrupt_injection(CPUState *env); /*! * \brief Read VCPU registers -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 08/10] use env in kvm_arch_run 2009-10-09 18:03 ` [PATCH 07/10] use env as parameter for functions that access kvm_run Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 09/10] remove kvm_run from vcpu_context Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi kvm_arch_run() takes a vcpu context parameter, but CPUState should do. Convert it, as well as the functions that it end up calling Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-x86.c | 12 ++++++------ qemu-kvm.c | 2 +- qemu-kvm.h | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index c5455d7..fffcfd8 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -162,10 +162,10 @@ int kvm_arch_create(kvm_context_t kvm, unsigned long phys_mem_bytes, #ifdef KVM_EXIT_TPR_ACCESS -static int kvm_handle_tpr_access(kvm_vcpu_context_t vcpu) +static int kvm_handle_tpr_access(CPUState *env) { - struct kvm_run *run = vcpu->run; - kvm_tpr_access_report(cpu_single_env, + struct kvm_run *run = env->kvm_run; + kvm_tpr_access_report(env, run->tpr_access.rip, run->tpr_access.is_write); return 0; @@ -190,10 +190,10 @@ int kvm_enable_vapic(kvm_vcpu_context_t vcpu, uint64_t vapic) #endif -int kvm_arch_run(kvm_vcpu_context_t vcpu) +int kvm_arch_run(CPUState *env) { int r = 0; - struct kvm_run *run = vcpu->run; + struct kvm_run *run = env->kvm_run; switch (run->exit_reason) { @@ -203,7 +203,7 @@ int kvm_arch_run(kvm_vcpu_context_t vcpu) #endif #ifdef KVM_EXIT_TPR_ACCESS case KVM_EXIT_TPR_ACCESS: - r = kvm_handle_tpr_access(vcpu); + r = kvm_handle_tpr_access(env); break; #endif default: diff --git a/qemu-kvm.c b/qemu-kvm.c index bd1c0b5..fb50bb4 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -1037,7 +1037,7 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) abort(); break; default: - if (kvm_arch_run(vcpu)) { + if (kvm_arch_run(env)) { fprintf(stderr, "unhandled vm exit: 0x%x\n", run->exit_reason); kvm_show_regs(vcpu); abort(); diff --git a/qemu-kvm.h b/qemu-kvm.h index 28940dd..adb2970 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -93,7 +93,8 @@ int kvm_alloc_userspace_memory(kvm_context_t kvm, unsigned long memory, int kvm_arch_create(kvm_context_t kvm, unsigned long phys_mem_bytes, void **vm_mem); -int kvm_arch_run(kvm_vcpu_context_t vcpu); + +int kvm_arch_run(CPUState *env); void kvm_show_code(kvm_vcpu_context_t vcpu); -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 09/10] remove kvm_run from vcpu_context 2009-10-09 18:03 ` [PATCH 08/10] use env in kvm_arch_run Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 2009-10-09 18:03 ` [PATCH 10/10] remove id field from vcpu context structure Glauber Costa 0 siblings, 1 reply; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi There are no more users of kvm_run inside vcpu context. Remove it, and leave the one inside CPUState for the job. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm.c | 4 +--- qemu-kvm.h | 1 - 2 files changed, 1 insertions(+), 4 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index fb50bb4..8257dd3 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -467,8 +467,6 @@ kvm_vcpu_context_t kvm_create_vcpu(CPUState *env, int id) goto err_fd; } - vcpu_ctx->run = env->kvm_run; - return vcpu_ctx; err_fd: close(vcpu_ctx->fd); @@ -938,9 +936,9 @@ int kvm_run(kvm_vcpu_context_t vcpu, void *env) { int r; int fd = vcpu->fd; - struct kvm_run *run = vcpu->run; CPUState *_env = env; kvm_context_t kvm = &_env->kvm_state->kvm_context; + struct kvm_run *run = _env->kvm_run; again: push_nmi(kvm); diff --git a/qemu-kvm.h b/qemu-kvm.h index adb2970..f051889 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -78,7 +78,6 @@ struct kvm_context { struct kvm_vcpu_context { int fd; - struct kvm_run *run; uint32_t id; }; -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 10/10] remove id field from vcpu context structure 2009-10-09 18:03 ` [PATCH 09/10] remove kvm_run from vcpu_context Glauber Costa @ 2009-10-09 18:03 ` Glauber Costa 0 siblings, 0 replies; 13+ messages in thread From: Glauber Costa @ 2009-10-09 18:03 UTC (permalink / raw) To: kvm; +Cc: avi qemu already stores id information in a couple of places. No need to do it here too. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm.c | 2 -- qemu-kvm.h | 1 - 2 files changed, 0 insertions(+), 3 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index 8257dd3..06c1226 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -442,8 +442,6 @@ kvm_vcpu_context_t kvm_create_vcpu(CPUState *env, int id) int r; kvm_vcpu_context_t vcpu_ctx = qemu_malloc(sizeof(struct kvm_vcpu_context)); - vcpu_ctx->id = id; - r = kvm_vm_ioctl(kvm_state, KVM_CREATE_VCPU, id); if (r < 0) { fprintf(stderr, "kvm_create_vcpu: %m\n"); diff --git a/qemu-kvm.h b/qemu-kvm.h index f051889..d07aa86 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -78,7 +78,6 @@ struct kvm_context { struct kvm_vcpu_context { int fd; - uint32_t id; }; typedef struct kvm_context *kvm_context_t; -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 00/10] Clean up vcpu context structure 2009-10-09 18:03 [PATCH 00/10] Clean up vcpu context structure Glauber Costa 2009-10-09 18:03 ` [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test Glauber Costa @ 2009-10-12 9:24 ` Avi Kivity 2009-10-13 17:04 ` Marcelo Tosatti 2 siblings, 0 replies; 13+ messages in thread From: Avi Kivity @ 2009-10-12 9:24 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm, Marcelo Tosatti On 10/09/2009 08:03 PM, Glauber Costa wrote: > This series aims at cleanin up vcpu_context structure. I am not removing yet > the fd field, because it is used in the ioctls, and I want to do it separadedly. > > But after this series, this structure exists only as a way to hold the file descriptor, > and is, much cleaner, and much closer to upstream qemu than before. > I agree. Looks good! -- error compiling committee.c: too many arguments to function ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 00/10] Clean up vcpu context structure 2009-10-09 18:03 [PATCH 00/10] Clean up vcpu context structure Glauber Costa 2009-10-09 18:03 ` [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test Glauber Costa 2009-10-12 9:24 ` [PATCH 00/10] Clean up " Avi Kivity @ 2009-10-13 17:04 ` Marcelo Tosatti 2 siblings, 0 replies; 13+ messages in thread From: Marcelo Tosatti @ 2009-10-13 17:04 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm, avi On Fri, Oct 09, 2009 at 03:03:08PM -0300, Glauber Costa wrote: > This series aims at cleanin up vcpu_context structure. I am not removing yet > the fd field, because it is used in the ioctls, and I want to do it separadedly. > > But after this series, this structure exists only as a way to hold the file descriptor, > and is, much cleaner, and much closer to upstream qemu than before. Applied, thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2009-10-13 17:05 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-09 18:03 [PATCH 00/10] Clean up vcpu context structure Glauber Costa 2009-10-09 18:03 ` [PATCH 01/10] use a more upstream friendly version of irqchip-in-kernel test Glauber Costa 2009-10-09 18:03 ` [PATCH 02/10] drop kvm_mmio_read and write Glauber Costa 2009-10-09 18:03 ` [PATCH 03/10] remove unneded opaque Glauber Costa 2009-10-09 18:03 ` [PATCH 04/10] remove kvm_context from vpcu structure Glauber Costa 2009-10-09 18:03 ` [PATCH 05/10] Use kvm_run inside CPUState Glauber Costa 2009-10-09 18:03 ` [PATCH 06/10] make some functions static Glauber Costa 2009-10-09 18:03 ` [PATCH 07/10] use env as parameter for functions that access kvm_run Glauber Costa 2009-10-09 18:03 ` [PATCH 08/10] use env in kvm_arch_run Glauber Costa 2009-10-09 18:03 ` [PATCH 09/10] remove kvm_run from vcpu_context Glauber Costa 2009-10-09 18:03 ` [PATCH 10/10] remove id field from vcpu context structure Glauber Costa 2009-10-12 9:24 ` [PATCH 00/10] Clean up " Avi Kivity 2009-10-13 17:04 ` Marcelo Tosatti
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.