From patchwork Thu Aug 16 13:54:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 1332151 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id EE2FD40210 for ; Thu, 16 Aug 2012 13:54:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757161Ab2HPNyq (ORCPT ); Thu, 16 Aug 2012 09:54:46 -0400 Received: from goliath.siemens.de ([192.35.17.28]:22695 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756838Ab2HPNyl (ORCPT ); Thu, 16 Aug 2012 09:54:41 -0400 Received: from mail1.siemens.de (localhost [127.0.0.1]) by goliath.siemens.de (8.13.6/8.13.6) with ESMTP id q7GDsZMH030772; Thu, 16 Aug 2012 15:54:35 +0200 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id q7GDsYJK012893; Thu, 16 Aug 2012 15:54:35 +0200 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm@vger.kernel.org, Alex Williamson Subject: [PATCH 10/19] pci-assign: Replace kvm_assign_set_msix_entry with kvm_device_msix_set_vector Date: Thu, 16 Aug 2012 15:54:24 +0200 Message-Id: X-Mailer: git-send-email 1.7.3.4 In-Reply-To: References: In-Reply-To: References: Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org The refactored version cleanly hides the KVM IOCTL structure from the users and also zeros out the padding field. Signed-off-by: Jan Kiszka --- hw/device-assignment.c | 7 ++----- qemu-kvm.c | 8 -------- qemu-kvm.h | 4 ---- target-i386/kvm.c | 13 +++++++++++++ target-i386/kvm_i386.h | 2 ++ 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 0e2f8e6..af8a5aa 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -1045,7 +1045,6 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev) AssignedDevice *adev = DO_UPCAST(AssignedDevice, dev, pci_dev); uint16_t entries_nr = 0; int i, r = 0; - struct kvm_assigned_msix_entry msix_entry; MSIXTableEntry *entry = adev->msix_table; /* Get the usable entry number for allocating */ @@ -1075,7 +1074,6 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev) adev->irq_entries_nr = adev->msix_max; adev->entry = g_malloc0(adev->msix_max * sizeof(*(adev->entry))); - msix_entry.assigned_dev_id = adev->dev_id; entry = adev->msix_table; for (i = 0; i < adev->msix_max; i++, entry++) { if (msix_masked(entry)) { @@ -1098,9 +1096,8 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev) kvm_add_routing_entry(kvm_state, &adev->entry[i]); - msix_entry.gsi = adev->entry[i].gsi; - msix_entry.entry = i; - r = kvm_assign_set_msix_entry(kvm_state, &msix_entry); + r = kvm_device_msix_set_vector(kvm_state, adev->dev_id, i, + adev->entry[i].gsi); if (r) { fprintf(stderr, "fail to set MSI-X entry! %s\n", strerror(-r)); break; diff --git a/qemu-kvm.c b/qemu-kvm.c index 1a2a4fd..ec1911f 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -185,14 +185,6 @@ int kvm_get_irq_route_gsi(void) #endif } -#ifdef KVM_CAP_DEVICE_MSIX -int kvm_assign_set_msix_entry(KVMState *s, - struct kvm_assigned_msix_entry *entry) -{ - return kvm_vm_ioctl(s, KVM_ASSIGN_SET_MSIX_ENTRY, entry); -} -#endif - #if !defined(TARGET_I386) void kvm_arch_init_irq_routing(KVMState *s) { diff --git a/qemu-kvm.h b/qemu-kvm.h index 3fd6046..ad628d5 100644 --- a/qemu-kvm.h +++ b/qemu-kvm.h @@ -65,10 +65,6 @@ int kvm_del_routing_entry(struct kvm_irq_routing_entry *entry); int kvm_update_routing_entry(struct kvm_irq_routing_entry *entry, struct kvm_irq_routing_entry *newentry); - -int kvm_assign_set_msix_entry(KVMState *s, - struct kvm_assigned_msix_entry *entry); - #endif /* CONFIG_KVM */ #endif diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 676f45b..e9353ed 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -2173,6 +2173,19 @@ int kvm_device_msix_init_vectors(KVMState *s, uint32_t dev_id, return kvm_vm_ioctl(s, KVM_ASSIGN_SET_MSIX_NR, &msix_nr); } +int kvm_device_msix_set_vector(KVMState *s, uint32_t dev_id, uint32_t vector, + int virq) +{ + struct kvm_assigned_msix_entry msix_entry = { + .assigned_dev_id = dev_id, + .gsi = virq, + .entry = vector, + }; + + memset(msix_entry.padding, 0, sizeof(msix_entry.padding)); + return kvm_vm_ioctl(s, KVM_ASSIGN_SET_MSIX_ENTRY, &msix_entry); +} + int kvm_device_msix_deassign(KVMState *s, uint32_t dev_id) { return kvm_deassign_irq_internal(s, dev_id, KVM_DEV_IRQ_GUEST_MSIX | diff --git a/target-i386/kvm_i386.h b/target-i386/kvm_i386.h index aac14eb..bd3b398 100644 --- a/target-i386/kvm_i386.h +++ b/target-i386/kvm_i386.h @@ -30,6 +30,8 @@ int kvm_device_msi_deassign(KVMState *s, uint32_t dev_id); bool kvm_device_msix_supported(KVMState *s); int kvm_device_msix_init_vectors(KVMState *s, uint32_t dev_id, uint32_t nr_vectors); +int kvm_device_msix_set_vector(KVMState *s, uint32_t dev_id, uint32_t vector, + int virq); int kvm_device_msix_deassign(KVMState *s, uint32_t dev_id); #endif