From: Jan Kiszka <jan.kiszka@siemens.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH 10/19] pci-assign: Replace kvm_assign_set_msix_entry with kvm_device_msix_set_vector
Date: Thu, 16 Aug 2012 18:30:36 +0200 [thread overview]
Message-ID: <502D202C.2050601@siemens.com> (raw)
In-Reply-To: <1345134065.4683.471.camel@ul30vt.home>
On 2012-08-16 18:21, Alex Williamson wrote:
> On Thu, 2012-08-16 at 15:54 +0200, Jan Kiszka wrote:
>> The refactored version cleanly hides the KVM IOCTL structure from the
>> users and also zeros out the padding field.
>>
>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>> ---
>> 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));
>
> nit, I think this can be done w/o a memset. .padding = { 0 }? Thanks,
I think to remember it has to be .padding = { 0, 0, 0 } (due to three
padding elements) to be standard conforming, but that would still be
nicer than the memset, indeed.
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2012-08-16 16:30 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-16 13:54 [PATCH 00/19] pci-assign: Refactor for upstream merge Jan Kiszka
2012-08-16 13:54 ` [PATCH 01/19] pci-assign: Only clean up registered IO resources Jan Kiszka
2012-08-16 13:54 ` [PATCH 02/19] pci-assign: Factor out kvm_device_pci_assign/deassign Jan Kiszka
2012-08-16 13:54 ` [PATCH 03/19] pci-assign: Rename assign_irq to assign_intx Jan Kiszka
2012-08-16 13:54 ` [PATCH 04/19] pci-assign: Refactor interrupt deassignment Jan Kiszka
2012-08-16 13:54 ` [PATCH 05/19] pci-assign: Factor out kvm_device_intx_assign Jan Kiszka
2012-08-16 13:54 ` [PATCH 06/19] qemu-kvm: Move kvm_device_intx_set_mask service Jan Kiszka
2012-08-16 13:54 ` [PATCH 07/19] pci-assign: Rework MSI assignment Jan Kiszka
2012-08-16 13:54 ` [PATCH 08/19] pci-assign: Factor out kvm_device_msix_supported Jan Kiszka
2012-08-16 13:54 ` [PATCH 09/19] pci-assign: Replace kvm_assign_set_msix_nr with kvm_device_msix_init_vectors Jan Kiszka
2012-08-16 13:54 ` [PATCH 10/19] pci-assign: Replace kvm_assign_set_msix_entry with kvm_device_msix_set_vector Jan Kiszka
2012-08-16 16:21 ` Alex Williamson
2012-08-16 16:30 ` Jan Kiszka [this message]
2012-08-16 17:30 ` Jan Kiszka
2012-08-16 18:23 ` Alex Williamson
2012-08-16 16:34 ` Avi Kivity
2012-08-16 16:43 ` Alex Williamson
2012-08-16 13:54 ` [PATCH 11/19] pci-assign: Rework MSI-X route setup Jan Kiszka
2012-08-16 13:54 ` [PATCH 12/19] pci-assign: Factor out kvm_device_msix_assign Jan Kiszka
2012-08-16 13:54 ` [PATCH 13/19] qemu-kvm: Kill qemu-kvm.[ch] Jan Kiszka
2012-08-16 13:54 ` [PATCH 14/19] pci-assign: Drop configure switches Jan Kiszka
2012-08-16 13:54 ` [PATCH 15/19] pci-assign: Move and rename source file Jan Kiszka
2012-08-16 13:54 ` [PATCH 16/19] pci-assign: Fix coding style issues Jan Kiszka
2012-08-16 13:54 ` [PATCH 17/19] pci-assign: Replace exit() with hw_error() Jan Kiszka
2012-08-16 13:54 ` [PATCH 18/19] pci-assign: Drop unused or write-only variables Jan Kiszka
2012-08-16 13:54 ` [PATCH 19/19] pci-assign: Gracefully handle missing in-kernel irqchip support Jan Kiszka
2012-08-16 14:34 ` [PATCH 00/19] pci-assign: Refactor for upstream merge Avi Kivity
2012-08-16 14:49 ` Jan Kiszka
2012-08-16 16:07 ` Michael S. Tsirkin
2012-08-16 16:33 ` Alex Williamson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=502D202C.2050601@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=alex.williamson@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.