All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Sheng Yang <sheng@linux.intel.com>
Cc: kvm@vger.kernel.org, Avi Kivity <avi@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>
Subject: Re: Device assignment hotplug broken
Date: Tue, 30 Jun 2009 14:28:08 +0200	[thread overview]
Message-ID: <87eit1c3dz.fsf@pike.pond.sub.org> (raw)
In-Reply-To: <200906301338.52915.sheng@linux.intel.com> (Sheng Yang's message of "Tue\, 30 Jun 2009 13\:38\:52 +0800")

Sheng Yang <sheng@linux.intel.com> writes:

> On Friday 26 June 2009 01:24:03 Avi Kivity wrote:
>> The impact of the hotplug changes on device assignment were too
>> difficult for me to fix up during the merge, so I disabled it
>> temporarily.  Please take a look at qemu-kvm.git commit a3b371477e3.
>
> When the device assignment can come back? 4 day passed and no message from 
> Markus Armbruster till now.

I'm having difficulties testing my patch.  If it works for you, please
let me know.  Once I'm satisfied it works, I'll post it properly.



diff --git a/hw/device-assignment.c b/hw/device-assignment.c
index e282498..88c3baf 100644
--- a/hw/device-assignment.c
+++ b/hw/device-assignment.c
@@ -1126,9 +1126,8 @@ static int assigned_dev_register_msix_mmio(AssignedDevice *dev)
 struct PCIDevice *init_assigned_device(AssignedDevInfo *adev,
                                        const char *devaddr)
 {
-    printf("init_assigned_device: fix me please\n");
-    return NULL;
-#if 0
+    PCIBus *bus;
+    int devfn;
     int r;
     AssignedDevice *dev;
     PCIDevice *pci_dev;
@@ -1138,8 +1137,9 @@ struct PCIDevice *init_assigned_device(AssignedDevInfo *adev,
     DEBUG("Registering real physical device %s (bus=%x dev=%x func=%x)\n",
           adev->name, adev->bus, adev->dev, adev->func);
 
+    bus = pci_get_bus_devfn(&devfn, devaddr);
     pci_dev = pci_register_device(bus, adev->name,
-              sizeof(AssignedDevice), -1, assigned_dev_pci_read_config,
+              sizeof(AssignedDevice), devfn, assigned_dev_pci_read_config,
               assigned_dev_pci_write_config);
     dev = container_of(pci_dev, AssignedDevice, dev);
 
@@ -1203,7 +1203,6 @@ assigned_out:
 out:
     free_assigned_device(adev);
     return NULL;
-#endif
 }
 
 /*
@@ -1268,7 +1267,7 @@ void add_assigned_devices(PCIBus *bus, const char **devices, int n_devices)
             exit(1);
         }
 
-        if (!init_assigned_device(adev, bus)) {
+        if (!init_assigned_device(adev, NULL)) {
             fprintf(stderr, "Failed to initialize assigned device %s\n",
                     devices[i]);
             exit(1);
diff --git a/hw/pci.c b/hw/pci.c
index 618582a..0107096 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -290,7 +290,7 @@ int pci_read_devaddr(const char *addr, int *domp, int *busp, unsigned *slotp)
     return pci_parse_devaddr(devaddr, domp, busp, slotp);
 }
 
-static PCIBus *pci_get_bus_devfn(int *devfnp, const char *devaddr)
+PCIBus *pci_get_bus_devfn(int *devfnp, const char *devaddr)
 {
     int dom, bus;
     unsigned slot;
diff --git a/hw/pci.h b/hw/pci.h
index 7d8df83..a2c3a23 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -239,6 +239,7 @@ int pci_read_devaddr(const char *addr, int *domp, int *busp, unsigned *slotp);
 
 int pci_parse_host_devaddr(const char *addr, int *busp,
                            int *slotp, int *funcp);
+PCIBus *pci_get_bus_devfn(int *devfnp, const char *devaddr);
 
 void pci_info(Monitor *mon);
 PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
-- 
1.6.2.5


  reply	other threads:[~2009-06-30 12:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-25 17:24 Device assignment hotplug broken Avi Kivity
2009-06-30  5:38 ` Sheng Yang
2009-06-30 12:28   ` Markus Armbruster [this message]
2009-07-01  1:54     ` Sheng Yang
2009-07-01 15:45       ` Markus Armbruster
2009-07-01 16:22 ` [PATCH] Fix up device assignment hotplug and re-enable it Markus Armbruster
2009-07-02 12:03   ` 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=87eit1c3dz.fsf@pike.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=sheng@linux.intel.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.