Index: conf/options.i386 =================================================================== --- conf/options.i386 (revision 230331) +++ conf/options.i386 (working copy) @@ -92,6 +92,7 @@ # AGP debugging support AGP_DEBUG opt_agp.h +DEV_PSM opt_psm.h PSM_DEBUG opt_psm.h PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h Index: conf/options.amd64 =================================================================== --- conf/options.amd64 (revision 230331) +++ conf/options.amd64 (working copy) @@ -53,6 +53,7 @@ # EOF # ------------------------------- HAMMER opt_cpu.h +DEV_PSM opt_psm.h PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h PSM_DEBUG opt_psm.h Index: conf/options.ia64 =================================================================== --- conf/options.ia64 (revision 230331) +++ conf/options.ia64 (working copy) @@ -23,6 +23,7 @@ # AGP debugging. AGP_DEBUG opt_agp.h +DEV_PSM opt_psm.h PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h PSM_DEBUG opt_psm.h Index: dev/acpica/acpi.c =================================================================== --- dev/acpica/acpi.c (revision 230331) +++ dev/acpica/acpi.c (working copy) @@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$"); #include "opt_acpi.h" +#include "opt_psm.h" + #include #include #include @@ -1118,6 +1120,9 @@ static char *pcilink_ids[] = { "PNP0C0F", NULL }; static char *sysres_ids[] = { "PNP0C01", "PNP0C02", NULL }; +#ifdef DEV_PSM +extern struct isa_pnp_id *psmcpnp_ids; +#endif /* * Reserve declared resources for devices found during attach once system @@ -1144,6 +1149,16 @@ if (ACPI_ID_PROBE(dev, children[i], sysres_ids) != NULL) continue; +#ifdef DEV_PSM + /* + * Don't reserve resources for PS/2 mice ports. Some BIOSes + * put the I/O ports for the keyboard controller under the + * mouse device rather than the keyboard device. + */ + if (ISA_PNP_PROBE(device_get_parent(dev), dev, psmcpnp_ids) == 0) + continue; +#endif + STAILQ_FOREACH(rle, rl, link) { /* * Don't reserve IRQ resources. There are many sticky things Index: dev/atkbdc/psm.c =================================================================== --- dev/atkbdc/psm.c (revision 230331) +++ dev/atkbdc/psm.c (working copy) @@ -4594,7 +4594,7 @@ 1, /* no softc */ }; -static struct isa_pnp_id psmcpnp_ids[] = { +struct isa_pnp_id psmcpnp_ids[] = { { 0x030fd041, "PS/2 mouse port" }, /* PNP0F03 */ { 0x0e0fd041, "PS/2 mouse port" }, /* PNP0F0E */ { 0x120fd041, "PS/2 mouse port" }, /* PNP0F12 */