Also disable a couple of ACPI devices that are not usable under Dom0.
---
 sys/x86/xen/xen_nexus.c |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/sys/x86/xen/xen_nexus.c b/sys/x86/xen/xen_nexus.c
index 288e6b6..823b3bc 100644
--- a/sys/x86/xen/xen_nexus.c
+++ b/sys/x86/xen/xen_nexus.c
@@ -35,6 +35,10 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/smp.h>
 
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+
 #include <machine/nexusvar.h>
 
 #include <xen/xen-os.h>
@@ -44,7 +48,6 @@ static const char *xen_devices[] =
        "xenstore",             /* XenStore bus */
        "xen_et",               /* Xen PV timer (provides: tc, et, clk) */
        "xc",                   /* Xen PV console */
-       "isa",                  /* Dummy ISA bus for sc to attach */
 };
 
 /*
@@ -56,13 +59,14 @@ nexus_xen_probe(device_t dev)
        if (!xen_pv_domain())
                return (ENXIO);
 
-       return (BUS_PROBE_DEFAULT);
+       return (BUS_PROBE_SPECIFIC);
 }
 
 static int
 nexus_xen_attach(device_t dev)
 {
        int i, error = 0;
+       device_t acpi_dev;
 
        nexus_init_resources();
        bus_generic_probe(dev);
@@ -79,8 +83,22 @@ nexus_xen_attach(device_t dev)
                if (BUS_ADD_CHILD(dev, 0, xen_devices[i], 0) == NULL)
                        panic("%s: could not add", xen_devices[i]);
        }
+       if (xen_initial_domain()) {
+               /* Disable some ACPI devices that are not usable by Dom0 */
+               setenv("debug.acpi.disabled", "cpu hpet timer");
+
+               acpi_dev = BUS_ADD_CHILD(dev, 10, "acpi", 0);
+               if (acpi_dev == NULL)
+                       panic("Unable to add ACPI bus to Xen Dom0");
+       } else {
+               /* Dummy ISA bus for sc to attach */
+               if (BUS_ADD_CHILD(dev, 0, "isa", 0) == NULL)
+                       panic("isa: could not add");
+       }
 
-       bus_generic_attach(dev);
+       error = bus_generic_attach(dev);
+       if (xen_initial_domain() && (error == 0))
+               acpi_install_wakeup_handler(device_get_softc(acpi_dev));
 
        return (error);
 }
-- 
1.7.7.5 (Apple Git-26)

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to