--- drivers/acpi/bus.c | 7 ------- drivers/acpi/scan.c | 5 +++-- 2 files changed, 3 insertions(+), 9 deletions(-) Index: linux-2.6/drivers/acpi/bus.c =================================================================== --- linux-2.6.orig/drivers/acpi/bus.c +++ linux-2.6/drivers/acpi/bus.c @@ -107,13 +107,6 @@ int acpi_bus_get_status(struct acpi_devi ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED | ACPI_STA_DEVICE_UI | ACPI_STA_DEVICE_FUNCTIONING; - if (device->status.functional && !device->status.present) { - printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: " - "functional but not present; setting present\n", - device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status)); - device->status.present = 1; - } - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status))); Index: linux-2.6/drivers/acpi/scan.c =================================================================== --- linux-2.6.orig/drivers/acpi/scan.c +++ linux-2.6/drivers/acpi/scan.c @@ -1129,7 +1129,7 @@ acpi_add_single_object(struct acpi_devic case ACPI_BUS_TYPE_PROCESSOR: case ACPI_BUS_TYPE_DEVICE: result = acpi_bus_get_status(device); - if (ACPI_FAILURE(result) || !device->status.present) { + if (ACPI_FAILURE(result) || (!device->status.present && !device->status.functional)) { result = -ENOENT; goto end; } @@ -1304,7 +1304,8 @@ static int acpi_bus_scan(struct acpi_dev * TBD: Need notifications and other detection mechanisms * in place before we can fully implement this. */ - if (child->status.present) { + if (child->status.present || + (child->status.functional && !child->status.present)) { status = acpi_get_next_object(ACPI_TYPE_ANY, chandle, NULL, NULL); if (ACPI_SUCCESS(status)) {