>From 9cf3b4c270c12f1ba966a033f3d207aed898a52a Mon Sep 17 00:00:00 2001 From: Weidong Han <[EMAIL PROTECTED]> Date: Fri, 14 Nov 2008 16:35:16 +0800 Subject: [PATCH] Add interface to remove ioperm data
When hot remove assigned device, need to remove its ioperm data Signed-off-by: Weidong Han <[EMAIL PROTECTED]> --- qemu/qemu-kvm.c | 16 ++++++++++++++-- qemu/qemu-kvm.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index 4100bc8..06bcba0 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -1059,9 +1059,21 @@ int qemu_kvm_unregister_coalesced_mmio(target_phys_addr_t addr, #include <sys/io.h> #ifdef USE_KVM_DEVICE_ASSIGNMENT -void kvm_add_ioperm_data(struct ioperm_data *data) +void kvm_add_ioperm_data(void *data) { - LIST_INSERT_HEAD(&ioperm_head, data, entries); + LIST_INSERT_HEAD(&ioperm_head, (struct ioperm_data *)data, entries); +} + +void kvm_remove_ioperm_data(unsigned long start_port, unsigned long num) +{ + struct ioperm_data *data; + + LIST_FOREACH(data, &ioperm_head, entries) { + if (data->start_port == start_port && + data->num == num) + LIST_REMOVE(data, entries); + qemu_free(data); + } } void kvm_ioperm(CPUState *env, void *data) diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h index 56bc0e7..e5a8b06 100644 --- a/qemu/qemu-kvm.h +++ b/qemu/qemu-kvm.h @@ -95,6 +95,8 @@ void qemu_kvm_system_reset_request(void); #ifdef USE_KVM_DEVICE_ASSIGNMENT void kvm_ioperm(CPUState *env, void *data); +void kvm_add_ioperm_data(void *data); +void kvm_remove_ioperm_data(unsigned long start_port, unsigned long num); void kvm_arch_do_ioperm(void *_data); #endif -- 1.5.1
0003-Add-interface-to-remove-ioperm-data.patch
Description: 0003-Add-interface-to-remove-ioperm-data.patch