aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2012-03-21 10:08:38 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2012-03-22 11:37:11 -0400
commitb9136d207f0c05c96c6b9c980fa7f7fd541a65a8 (patch)
treec5782f620475131fbd838cec21376c1a2dad7ff5 /drivers
parent106b44388d8f76373149c4ea144f717b6d4d9a6d (diff)
xen: initialize platform-pci even if xen_emul_unplug=never
When xen_emul_unplug=never is specified on kernel command line reading files from /sys/hypervisor is broken (returns -EBUSY). It is caused by xen_bus dependency on platform-pci and platform-pci isn't initialized when xen_emul_unplug=never is specified. Fix it by allowing platform-pci to ignore xen_emul_unplug=never, and do not intialize xen_[blk|net]front instead. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/xen-blkfront.c3
-rw-r--r--drivers/net/xen-netfront.c4
-rw-r--r--drivers/xen/platform-pci.c5
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 9fd3ee203b1e..4276ab035e00 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -1452,6 +1452,9 @@ static int __init xlblk_init(void)
1452 if (!xen_domain()) 1452 if (!xen_domain())
1453 return -ENODEV; 1453 return -ENODEV;
1454 1454
1455 if (!xen_platform_pci_unplug)
1456 return -ENODEV;
1457
1455 if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) { 1458 if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) {
1456 printk(KERN_WARNING "xen_blk: can't get major %d with name %s\n", 1459 printk(KERN_WARNING "xen_blk: can't get major %d with name %s\n",
1457 XENVBD_MAJOR, DEV_NAME); 1460 XENVBD_MAJOR, DEV_NAME);
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index fa679057630f..8cc0914b9f92 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -47,6 +47,7 @@
47#include <xen/xenbus.h> 47#include <xen/xenbus.h>
48#include <xen/events.h> 48#include <xen/events.h>
49#include <xen/page.h> 49#include <xen/page.h>
50#include <xen/platform_pci.h>
50#include <xen/grant_table.h> 51#include <xen/grant_table.h>
51 52
52#include <xen/interface/io/netif.h> 53#include <xen/interface/io/netif.h>
@@ -1956,6 +1957,9 @@ static int __init netif_init(void)
1956 if (xen_initial_domain()) 1957 if (xen_initial_domain())
1957 return 0; 1958 return 0;
1958 1959
1960 if (!xen_platform_pci_unplug)
1961 return -ENODEV;
1962
1959 printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n"); 1963 printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n");
1960 1964
1961 return xenbus_register_frontend(&netfront_driver); 1965 return xenbus_register_frontend(&netfront_driver);
diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
index 319dd0a94d51..2389e581e23c 100644
--- a/drivers/xen/platform-pci.c
+++ b/drivers/xen/platform-pci.c
@@ -186,11 +186,6 @@ static struct pci_driver platform_driver = {
186 186
187static int __init platform_pci_module_init(void) 187static int __init platform_pci_module_init(void)
188{ 188{
189 /* no unplug has been done, IGNORE hasn't been specified: just
190 * return now */
191 if (!xen_platform_pci_unplug)
192 return -ENODEV;
193
194 return pci_register_driver(&platform_driver); 189 return pci_register_driver(&platform_driver);
195} 190}
196 191