[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] pciback: Make PV PCI hotplug work with CONFIG_XEN_PCIDEV_BACKEND_PASS
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1206529688 0 # Node ID 542209a3e7e967430c89c99434d9a230420daad5 # Parent 1327b9dcc63a9855b998fdc21269d4c9eeb557a3 pciback: Make PV PCI hotplug work with CONFIG_XEN_PCIDEV_BACKEND_PASS Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@xxxxxxxxxxxxx> --- drivers/xen/pciback/passthrough.c | 10 ++++++++-- drivers/xen/pciback/xenbus.c | 20 ++++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff -r 1327b9dcc63a -r 542209a3e7e9 drivers/xen/pciback/passthrough.c --- a/drivers/xen/pciback/passthrough.c Wed Mar 26 09:07:52 2008 +0000 +++ b/drivers/xen/pciback/passthrough.c Wed Mar 26 11:08:08 2008 +0000 @@ -47,6 +47,8 @@ int pciback_add_pci_dev(struct pciback_d struct passthrough_dev_data *dev_data = pdev->pci_dev_data; struct pci_dev_entry *dev_entry; unsigned long flags; + unsigned int domain, bus, devfn; + int err; dev_entry = kmalloc(sizeof(*dev_entry), GFP_KERNEL); if (!dev_entry) @@ -57,9 +59,13 @@ int pciback_add_pci_dev(struct pciback_d list_add_tail(&dev_entry->list, &dev_data->dev_list); spin_unlock_irqrestore(&dev_data->lock, flags); - /* TODO: Publish virtual domain:bus:slot.func here. */ + /* Publish this device. */ + domain = (unsigned int)pci_domain_nr(dev->bus); + bus = (unsigned int)dev->bus->number; + devfn = dev->devfn; + err = publish_cb(pdev, domain, bus, devfn, devid); - return 0; + return err; } void pciback_release_pci_dev(struct pciback_device *pdev, struct pci_dev *dev) diff -r 1327b9dcc63a -r 542209a3e7e9 drivers/xen/pciback/xenbus.c --- a/drivers/xen/pciback/xenbus.c Wed Mar 26 09:07:52 2008 +0000 +++ b/drivers/xen/pciback/xenbus.c Wed Mar 26 11:08:08 2008 +0000 @@ -348,7 +348,6 @@ static int pciback_reconfigure(struct pc substate = XenbusStateUnknown; switch (substate) { - /* case XenbusStateUnknown: */ case XenbusStateInitialising: dev_dbg(&pdev->xdev->dev, "Attaching dev-%d ...\n", i); @@ -382,10 +381,14 @@ static int pciback_reconfigure(struct pc if (err) goto out; - /* TODO: if we are to support multiple pci roots - * (CONFIG_XEN_PCIDEV_BACKEND_PASS), publish newly - * added root here. - */ + /* Publish pci roots. */ + err = pciback_publish_pci_roots(pdev, pciback_publish_pci_root); + if (err) { + xenbus_dev_fatal(pdev->xdev, err, + "Error while publish PCI root" + "buses for frontend"); + goto out; + } err = xenbus_printf(XBT_NIL, pdev->xdev->nodename, state_str, "%d", @@ -431,10 +434,11 @@ static int pciback_reconfigure(struct pc if(err) goto out; - /* TODO: if we are to support multiple pci roots - * (CONFIG_XEN_PCIDEV_BACKEND_PASS), remove unnecessary - * root here. + /* TODO: If at some point we implement support for pci + * root hot-remove on pcifront side, we'll need to + * remove unnecessary xenstore nodes of pci roots here. */ + break; default: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |