From: Avi Kivity <avi@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
kvm@vger.kernel.org
Subject: [PATCH v2 2/8] kvm: drop kvm_context parameter from msix-related kvm functions
Date: Sun, 10 Oct 2010 16:42:01 +0200 [thread overview]
Message-ID: <1286721727-31447-3-git-send-email-avi@redhat.com> (raw)
In-Reply-To: <1286721727-31447-1-git-send-email-avi@redhat.com>
The kvm_context parameter serves no useful purpose since it's a global (and
all callers reference that global); on the other hand it prevents the build
when kvm is not configured in since the kvm_context symbol is not defined.
Remove the parameter and replace it by the global kvm_context in callees.
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/device-assignment.c | 14 +++++++-------
hw/msix.c | 20 ++++++++++----------
qemu-kvm-x86.c | 14 +++++++-------
qemu-kvm.c | 33 +++++++++++++++++++--------------
qemu-kvm.h | 36 ++++++++++--------------------------
5 files changed, 53 insertions(+), 64 deletions(-)
diff --git a/hw/device-assignment.c b/hw/device-assignment.c
index 26cb797..2605bd1 100644
--- a/hw/device-assignment.c
+++ b/hw/device-assignment.c
@@ -767,7 +767,7 @@ static void free_dev_irq_entries(AssignedDevice *dev)
int i;
for (i = 0; i < dev->irq_entries_nr; i++)
- kvm_del_routing_entry(kvm_context, &dev->entry[i]);
+ kvm_del_routing_entry(&dev->entry[i]);
free(dev->entry);
dev->entry = NULL;
dev->irq_entries_nr = 0;
@@ -1080,15 +1080,15 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev, unsigned int ctrl_pos)
assigned_dev->entry->u.msi.data = *(uint16_t *)(pci_dev->config +
pci_dev->cap.start + PCI_MSI_DATA_32);
assigned_dev->entry->type = KVM_IRQ_ROUTING_MSI;
- r = kvm_get_irq_route_gsi(kvm_context);
+ r = kvm_get_irq_route_gsi();
if (r < 0) {
perror("assigned_dev_update_msi: kvm_get_irq_route_gsi");
return;
}
assigned_dev->entry->gsi = r;
- kvm_add_routing_entry(kvm_context, assigned_dev->entry);
- if (kvm_commit_irq_routes(kvm_context) < 0) {
+ kvm_add_routing_entry(assigned_dev->entry);
+ if (kvm_commit_irq_routes() < 0) {
perror("assigned_dev_update_msi: kvm_commit_irq_routes");
assigned_dev->cap.state &= ~ASSIGNED_DEVICE_MSI_ENABLED;
return;
@@ -1170,7 +1170,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
memcpy(&msg_addr, va + i * 16, 4);
memcpy(&msg_upper_addr, va + i * 16 + 4, 4);
- r = kvm_get_irq_route_gsi(kvm_context);
+ r = kvm_get_irq_route_gsi();
if (r < 0)
return r;
@@ -1181,7 +1181,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
adev->entry[entries_nr].u.msi.address_hi = msg_upper_addr;
adev->entry[entries_nr].u.msi.data = msg_data;
DEBUG("MSI-X data 0x%x, MSI-X addr_lo 0x%x\n!", msg_data, msg_addr);
- kvm_add_routing_entry(kvm_context, &adev->entry[entries_nr]);
+ kvm_add_routing_entry(&adev->entry[entries_nr]);
msix_entry.gsi = adev->entry[entries_nr].gsi;
msix_entry.entry = i;
@@ -1195,7 +1195,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
entries_nr ++;
}
- if (r == 0 && kvm_commit_irq_routes(kvm_context) < 0) {
+ if (r == 0 && kvm_commit_irq_routes() < 0) {
perror("assigned_dev_update_msix_mmio: kvm_commit_irq_routes");
return -EINVAL;
}
diff --git a/hw/msix.c b/hw/msix.c
index 162faa7..6abf059 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -54,12 +54,12 @@ static void kvm_msix_free(PCIDevice *dev)
int vector, changed = 0;
for (vector = 0; vector < dev->msix_entries_nr; ++vector) {
if (dev->msix_entry_used[vector]) {
- kvm_del_routing_entry(kvm_context, &dev->msix_irq_entries[vector]);
+ kvm_del_routing_entry(&dev->msix_irq_entries[vector]);
changed = 1;
}
}
if (changed) {
- kvm_commit_irq_routes(kvm_context);
+ kvm_commit_irq_routes();
}
}
@@ -92,14 +92,14 @@ static void kvm_msix_update(PCIDevice *dev, int vector,
kvm_msix_routing_entry(dev, vector, &e);
if (memcmp(&entry->u.msi, &e.u.msi, sizeof entry->u.msi)) {
int r;
- r = kvm_update_routing_entry(kvm_context, entry, &e);
+ r = kvm_update_routing_entry(entry, &e);
if (r) {
fprintf(stderr, "%s: kvm_update_routing_entry failed: %s\n", __func__,
strerror(-r));
exit(1);
}
memcpy(&entry->u.msi, &e.u.msi, sizeof entry->u.msi);
- r = kvm_commit_irq_routes(kvm_context);
+ r = kvm_commit_irq_routes();
if (r) {
fprintf(stderr, "%s: kvm_commit_irq_routes failed: %s\n", __func__,
strerror(-r));
@@ -113,27 +113,27 @@ static int kvm_msix_add(PCIDevice *dev, unsigned vector)
struct kvm_irq_routing_entry *entry = dev->msix_irq_entries + vector;
int r;
- if (!kvm_has_gsi_routing(kvm_context)) {
+ if (!kvm_has_gsi_routing()) {
fprintf(stderr, "Warning: no MSI-X support found. "
"At least kernel 2.6.30 is required for MSI-X support.\n"
);
return -EOPNOTSUPP;
}
- r = kvm_get_irq_route_gsi(kvm_context);
+ r = kvm_get_irq_route_gsi();
if (r < 0) {
fprintf(stderr, "%s: kvm_get_irq_route_gsi failed: %s\n", __func__, strerror(-r));
return r;
}
entry->gsi = r;
kvm_msix_routing_entry(dev, vector, entry);
- r = kvm_add_routing_entry(kvm_context, entry);
+ r = kvm_add_routing_entry(entry);
if (r < 0) {
fprintf(stderr, "%s: kvm_add_routing_entry failed: %s\n", __func__, strerror(-r));
return r;
}
- r = kvm_commit_irq_routes(kvm_context);
+ r = kvm_commit_irq_routes();
if (r < 0) {
fprintf(stderr, "%s: kvm_commit_irq_routes failed: %s\n", __func__, strerror(-r));
return r;
@@ -146,8 +146,8 @@ static void kvm_msix_del(PCIDevice *dev, unsigned vector)
if (dev->msix_entry_used[vector]) {
return;
}
- kvm_del_routing_entry(kvm_context, &dev->msix_irq_entries[vector]);
- kvm_commit_irq_routes(kvm_context);
+ kvm_del_routing_entry(&dev->msix_irq_entries[vector]);
+ kvm_commit_irq_routes();
}
#else
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index bb09fd8..59aacd0 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -1370,34 +1370,34 @@ int kvm_arch_init_irq_routing(void)
{
int i, r;
- if (kvm_irqchip && kvm_has_gsi_routing(kvm_context)) {
- kvm_clear_gsi_routes(kvm_context);
+ if (kvm_irqchip && kvm_has_gsi_routing()) {
+ kvm_clear_gsi_routes();
for (i = 0; i < 8; ++i) {
if (i == 2) {
continue;
}
- r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_MASTER, i);
+ r = kvm_add_irq_route(i, KVM_IRQCHIP_PIC_MASTER, i);
if (r < 0) {
return r;
}
}
for (i = 8; i < 16; ++i) {
- r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
+ r = kvm_add_irq_route(i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
if (r < 0) {
return r;
}
}
for (i = 0; i < 24; ++i) {
if (i == 0 && irq0override) {
- r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, 2);
+ r = kvm_add_irq_route(i, KVM_IRQCHIP_IOAPIC, 2);
} else if (i != 2 || !irq0override) {
- r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, i);
+ r = kvm_add_irq_route(i, KVM_IRQCHIP_IOAPIC, i);
}
if (r < 0) {
return r;
}
}
- kvm_commit_irq_routes(kvm_context);
+ kvm_commit_irq_routes();
}
return 0;
}
diff --git a/qemu-kvm.c b/qemu-kvm.c
index e78d850..3966523 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -800,7 +800,7 @@ int kvm_reinject_control(kvm_context_t kvm, int pit_reinject)
return -ENOSYS;
}
-int kvm_has_gsi_routing(kvm_context_t kvm)
+int kvm_has_gsi_routing(void)
{
int r = 0;
@@ -819,9 +819,11 @@ int kvm_get_gsi_count(kvm_context_t kvm)
#endif
}
-int kvm_clear_gsi_routes(kvm_context_t kvm)
+int kvm_clear_gsi_routes(void)
{
#ifdef KVM_CAP_IRQ_ROUTING
+ kvm_context_t kvm = kvm_context;
+
kvm->irq_routes->nr = 0;
return 0;
#else
@@ -829,10 +831,10 @@ int kvm_clear_gsi_routes(kvm_context_t kvm)
#endif
}
-int kvm_add_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry)
+int kvm_add_routing_entry(struct kvm_irq_routing_entry *entry)
{
#ifdef KVM_CAP_IRQ_ROUTING
+ kvm_context_t kvm = kvm_context;
struct kvm_irq_routing *z;
struct kvm_irq_routing_entry *new;
int n, size;
@@ -867,7 +869,7 @@ int kvm_add_routing_entry(kvm_context_t kvm,
#endif
}
-int kvm_add_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin)
+int kvm_add_irq_route(int gsi, int irqchip, int pin)
{
#ifdef KVM_CAP_IRQ_ROUTING
struct kvm_irq_routing_entry e;
@@ -877,16 +879,16 @@ int kvm_add_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin)
e.flags = 0;
e.u.irqchip.irqchip = irqchip;
e.u.irqchip.pin = pin;
- return kvm_add_routing_entry(kvm, &e);
+ return kvm_add_routing_entry(&e);
#else
return -ENOSYS;
#endif
}
-int kvm_del_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry)
+int kvm_del_routing_entry(struct kvm_irq_routing_entry *entry)
{
#ifdef KVM_CAP_IRQ_ROUTING
+ kvm_context_t kvm = kvm_context;
struct kvm_irq_routing_entry *e, *p;
int i, gsi, found = 0;
@@ -943,11 +945,11 @@ int kvm_del_routing_entry(kvm_context_t kvm,
#endif
}
-int kvm_update_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry,
+int kvm_update_routing_entry(struct kvm_irq_routing_entry *entry,
struct kvm_irq_routing_entry *newentry)
{
#ifdef KVM_CAP_IRQ_ROUTING
+ kvm_context_t kvm = kvm_context;
struct kvm_irq_routing_entry *e;
int i;
@@ -987,7 +989,7 @@ int kvm_update_routing_entry(kvm_context_t kvm,
#endif
}
-int kvm_del_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin)
+int kvm_del_irq_route(int gsi, int irqchip, int pin)
{
#ifdef KVM_CAP_IRQ_ROUTING
struct kvm_irq_routing_entry e;
@@ -997,15 +999,17 @@ int kvm_del_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin)
e.flags = 0;
e.u.irqchip.irqchip = irqchip;
e.u.irqchip.pin = pin;
- return kvm_del_routing_entry(kvm, &e);
+ return kvm_del_routing_entry(&e);
#else
return -ENOSYS;
#endif
}
-int kvm_commit_irq_routes(kvm_context_t kvm)
+int kvm_commit_irq_routes(void)
{
#ifdef KVM_CAP_IRQ_ROUTING
+ kvm_context_t kvm = kvm_context;
+
kvm->irq_routes->flags = 0;
return kvm_vm_ioctl(kvm_state, KVM_SET_GSI_ROUTING, kvm->irq_routes);
#else
@@ -1013,8 +1017,9 @@ int kvm_commit_irq_routes(kvm_context_t kvm)
#endif
}
-int kvm_get_irq_route_gsi(kvm_context_t kvm)
+int kvm_get_irq_route_gsi(void)
{
+ kvm_context_t kvm = kvm_context;
int i, bit;
uint32_t *buf = kvm->used_gsi_bitmap;
diff --git a/qemu-kvm.h b/qemu-kvm.h
index 9809574..1030a02 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -665,10 +665,8 @@ int kvm_deassign_pci_device(kvm_context_t kvm,
*
* Checks whether kvm can reroute interrupts among the various interrupt
* controllers.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_has_gsi_routing(kvm_context_t kvm);
+int kvm_has_gsi_routing(void);
/*!
* \brief Determines the number of gsis that can be routed
@@ -687,29 +685,24 @@ int kvm_get_gsi_count(kvm_context_t kvm);
* Clears the temporary irq routing table. Nothing is committed to the
* running VM.
*
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_clear_gsi_routes(kvm_context_t kvm);
+int kvm_clear_gsi_routes(void);
/*!
* \brief Adds an irq route to the temporary irq routing table
*
* Adds an irq route to the temporary irq routing table. Nothing is
* committed to the running VM.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_add_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin);
+int kvm_add_irq_route(int gsi, int irqchip, int pin);
/*!
* \brief Removes an irq route from the temporary irq routing table
*
* Adds an irq route to the temporary irq routing table. Nothing is
* committed to the running VM.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_del_irq_route(kvm_context_t kvm, int gsi, int irqchip, int pin);
+int kvm_del_irq_route(int gsi, int irqchip, int pin);
struct kvm_irq_routing_entry;
/*!
@@ -717,22 +710,16 @@ struct kvm_irq_routing_entry;
*
* Adds a filled routing entry to the temporary irq routing table. Nothing is
* committed to the running VM.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_add_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry);
+int kvm_add_routing_entry(struct kvm_irq_routing_entry *entry);
/*!
* \brief Removes a routing from the temporary irq routing table
*
* Remove a routing to the temporary irq routing table. Nothing is
* committed to the running VM.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_del_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry);
+int kvm_del_routing_entry(struct kvm_irq_routing_entry *entry);
/*!
* \brief Updates a routing in the temporary irq routing table
@@ -740,11 +727,8 @@ int kvm_del_routing_entry(kvm_context_t kvm,
* Update a routing in the temporary irq routing table
* with a new value. entry type and GSI can not be changed.
* Nothing is committed to the running VM.
- *
- * \param kvm Pointer to the current kvm_context
*/
-int kvm_update_routing_entry(kvm_context_t kvm,
- struct kvm_irq_routing_entry *entry,
+int kvm_update_routing_entry(struct kvm_irq_routing_entry *entry,
struct kvm_irq_routing_entry *newentry);
/*!
@@ -754,7 +738,7 @@ int kvm_update_routing_entry(kvm_context_t kvm,
*
* \param kvm Pointer to the current kvm_context
*/
-int kvm_commit_irq_routes(kvm_context_t kvm);
+int kvm_commit_irq_routes(void);
/*!
* \brief Get unused GSI number for irq routing table
@@ -763,7 +747,7 @@ int kvm_commit_irq_routes(kvm_context_t kvm);
*
* \param kvm Pointer to the current kvm_context
*/
-int kvm_get_irq_route_gsi(kvm_context_t kvm);
+int kvm_get_irq_route_gsi(void);
/*!
* \brief Create a file descriptor for injecting interrupts
@@ -903,7 +887,7 @@ int kvm_arch_halt(CPUState *env);
int handle_tpr_access(void *opaque, CPUState *env, uint64_t rip,
int is_write);
-#define qemu_kvm_has_gsi_routing() kvm_has_gsi_routing(kvm_context)
+#define qemu_kvm_has_gsi_routing() kvm_has_gsi_routing()
#ifdef TARGET_I386
#define qemu_kvm_has_pit_state2() kvm_has_pit_state2(kvm_context)
#endif
--
1.7.3.1
next prev parent reply other threads:[~2010-10-10 14:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-10 14:41 [PATCH v2 0/8] Move msix.o back to target independent files list Avi Kivity
2010-10-10 14:42 ` [PATCH v2 1/8] msix: avoid leaking kvm data on init failure Avi Kivity
2010-10-10 14:42 ` Avi Kivity [this message]
2010-10-10 14:42 ` [PATCH v2 3/8] Avoid using kvm_irq_routing_entry in PCIDevice Avi Kivity
2010-10-10 14:42 ` [PATCH v2 4/8] Avoid use of kvm_irq_routing_entry in hw/msix.c Avi Kivity
2010-10-10 14:42 ` [PATCH v2 5/8] kvm: Add stubs for msix support code Avi Kivity
2010-10-10 14:42 ` [PATCH v2 6/8] kvm: allow kvm.h to be included from target independent files Avi Kivity
2010-10-10 14:42 ` [PATCH v2 7/8] msix: remove CONFIG_KVM depedency Avi Kivity
2010-10-10 14:42 ` [PATCH v2 8/8] Move msix.o build back to Makefile.objs Avi Kivity
2010-10-10 15:02 ` [PATCH v2 0/8] Move msix.o back to target independent files list Michael S. Tsirkin
2010-10-20 10:18 ` Michael S. Tsirkin
2010-10-20 10:38 ` Avi Kivity
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=1286721727-31447-3-git-send-email-avi@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox