@@ -113,19 +113,6 @@ static int kvm_msix_vector_add(PCIDevice *dev, unsigned vector)
KVMMsiMessage *kmm = dev->msix_irq_entries + vector;
int r;
- 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();
- if (r < 0) {
- fprintf(stderr, "%s: kvm_get_irq_route_gsi failed: %s\n", __func__, strerror(-r));
- return r;
- }
- kmm->gsi = r;
kvm_msix_message_from_vector(dev, vector, kmm);
r = kvm_msi_message_add(kmm);
if (r < 0) {
@@ -984,6 +984,17 @@ static void kvm_msi_routing_entry(struct kvm_irq_routing_entry *e,
int kvm_msi_message_add(KVMMsiMessage *msg)
{
struct kvm_irq_routing_entry e;
+ int ret;
+
+ if (!kvm_has_gsi_routing()) {
+ return -EOPNOTSUPP;
+ }
+
+ ret = kvm_get_irq_route_gsi();
+ if (ret < 0) {
+ return ret;
+ }
+ msg->gsi = ret;
kvm_msi_routing_entry(&e, msg);
return kvm_add_routing_entry(&e);
Testing support and allocating a GSI for an MSI message is required both for MSI and MSI-X. At this chance, drop the aging version warning. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- hw/msix.c | 13 ------------- qemu-kvm.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 13 deletions(-)