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>
This commit is contained in:
parent
106b44388d
commit
b9136d207f
|
@ -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 @@
|
||||||
#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)
|
||||||
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 = {
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue