提交 b9136d20 编写于 作者: I Igor Mammedov 提交者: Konrad Rzeszutek Wilk

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: NIgor Mammedov <imammedo@redhat.com>
Acked-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
上级 106b4438
...@@ -1452,6 +1452,9 @@ static int __init xlblk_init(void) ...@@ -1452,6 +1452,9 @@ static int __init xlblk_init(void)
if (!xen_domain()) if (!xen_domain())
return -ENODEV; return -ENODEV;
if (!xen_platform_pci_unplug)
return -ENODEV;
if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) { if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) {
printk(KERN_WARNING "xen_blk: can't get major %d with name %s\n", printk(KERN_WARNING "xen_blk: can't get major %d with name %s\n",
XENVBD_MAJOR, DEV_NAME); XENVBD_MAJOR, DEV_NAME);
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include <xen/xenbus.h> #include <xen/xenbus.h>
#include <xen/events.h> #include <xen/events.h>
#include <xen/page.h> #include <xen/page.h>
#include <xen/platform_pci.h>
#include <xen/grant_table.h> #include <xen/grant_table.h>
#include <xen/interface/io/netif.h> #include <xen/interface/io/netif.h>
...@@ -1956,6 +1957,9 @@ static int __init netif_init(void) ...@@ -1956,6 +1957,9 @@ static int __init netif_init(void)
if (xen_initial_domain()) if (xen_initial_domain())
return 0; return 0;
if (!xen_platform_pci_unplug)
return -ENODEV;
printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n"); printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n");
return xenbus_register_frontend(&netfront_driver); return xenbus_register_frontend(&netfront_driver);
......
...@@ -186,11 +186,6 @@ static struct pci_driver platform_driver = { ...@@ -186,11 +186,6 @@ static struct pci_driver platform_driver = {
static int __init platform_pci_module_init(void) static int __init platform_pci_module_init(void)
{ {
/* no unplug has been done, IGNORE hasn't been specified: just
* return now */
if (!xen_platform_pci_unplug)
return -ENODEV;
return pci_register_driver(&platform_driver); return pci_register_driver(&platform_driver);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册