commit d64658b1d9aa93823c4d0c2832a5f9e6a92756fa Author: Bjorn Helgaas Date: Tue Oct 9 16:07:36 2012 -0600 Revert "PCI: acpiphp: check whether _ADR evaluation succeeded" This reverts commit dfb117b3e50c52c7b3416db4a4569224b8db80bb. diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index ad6fd66..c0f6e6e 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -132,15 +132,6 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) if (!acpi_pci_check_ejectable(pbus, handle) && !is_dock_device(handle)) return AE_OK; - status = acpi_evaluate_integer(handle, "_ADR", NULL, &adr); - if (ACPI_FAILURE(status)) { - warn("can't evaluate _ADR (%#x)\n", status); - return AE_OK; - } - - device = (adr >> 16) & 0xffff; - function = adr & 0xffff; - pdev = pbus->self; if (pdev && pci_is_pcie(pdev)) { tmp = acpi_find_root_bridge_handle(pdev); @@ -153,6 +144,10 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) } } + acpi_evaluate_integer(handle, "_ADR", NULL, &adr); + device = (adr >> 16) & 0xffff; + function = adr & 0xffff; + newfunc = kzalloc(sizeof(struct acpiphp_func), GFP_KERNEL); if (!newfunc) return AE_NO_MEMORY; commit 395b49f199e4575b6588c663f71135ade67bcd7d Author: Bjorn Helgaas Date: Mon Oct 8 15:32:20 2012 -0600 debug diff --git a/drivers/acpi/pci_slot.c b/drivers/acpi/pci_slot.c index e50e31a..d19fc0a 100644 --- a/drivers/acpi/pci_slot.c +++ b/drivers/acpi/pci_slot.c @@ -34,7 +34,7 @@ #include #include -static bool debug; +static bool debug = true; static int check_sta_before_sun; #define DRIVER_VERSION "0.1" diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c index 0cb2ba5..5625c86 100644 --- a/drivers/gpu/drm/drm_agpsupport.c +++ b/drivers/gpu/drm/drm_agpsupport.c @@ -402,9 +402,11 @@ struct drm_agp_head *drm_agp_init(struct drm_device *dev) return NULL; memset((void *)head, 0, sizeof(*head)); head->bridge = agp_find_bridge(dev->pdev); + dev_info(&dev->pdev->dev, "drm_agp_init: AGP bridge 0x%p\n", head->bridge); if (!head->bridge) { if (!(head->bridge = agp_backend_acquire(dev->pdev))) { kfree(head); + dev_info(&dev->pdev->dev, "drm_agp_init: no AGP bridge, returning NULL\n"); return NULL; } agp_copy_info(head->bridge, &head->agp_info); diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c index 5320364..bc21a71 100644 --- a/drivers/gpu/drm/drm_pci.c +++ b/drivers/gpu/drm/drm_pci.c @@ -268,6 +268,7 @@ static int drm_pci_irq_by_busid(struct drm_device *dev, struct drm_irq_busid *p) int drm_pci_agp_init(struct drm_device *dev) { + dev_info(&dev->pdev->dev, "drm_pci_agp_init\n"); if (drm_core_has_AGP(dev)) { if (drm_pci_device_is_agp(dev)) dev->agp = drm_agp_init(dev); @@ -314,6 +315,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent, struct drm_device *dev; int ret; + dev_info(&pdev->dev, "drm_get_pci_dev\n"); DRM_DEBUG("\n"); dev = kzalloc(sizeof(*dev), GFP_KERNEL); diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index 21bcd4a..12c1ae8 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c @@ -263,6 +263,7 @@ int drm_fill_in_dev(struct drm_device *dev, { int retcode; + dev_info(&dev->pdev->dev, "drm_fill_in_dev\n"); INIT_LIST_HEAD(&dev->filelist); INIT_LIST_HEAD(&dev->ctxlist); INIT_LIST_HEAD(&dev->vmalist); @@ -291,8 +292,10 @@ int drm_fill_in_dev(struct drm_device *dev, if (dev->driver->bus->agp_init) { retcode = dev->driver->bus->agp_init(dev); - if (retcode) + if (retcode) { + dev_info(&dev->pdev->dev, "drm_fill_in_dev, agp_init returned %#x\n", retcode); goto error_out_unreg; + } } @@ -315,6 +318,7 @@ int drm_fill_in_dev(struct drm_device *dev, return 0; error_out_unreg: + dev_info(&dev->pdev->dev, "drm_fill_in_dev calling drm_lastclose, dev->dev_private = 0x%p\n", dev->dev_private); drm_lastclose(dev); return retcode; } diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index a24ffbe..26d9b4c 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -827,6 +827,7 @@ i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct intel_device_info *intel_info = (struct intel_device_info *) ent->driver_data; + dev_info(&pdev->dev, "i915_pci_probe\n"); /* Only bind to function 0 of the device. Early generations * used function 1 as a placeholder for multi-head. This causes diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index 97f6735..a72aea2 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c @@ -281,6 +281,7 @@ void intel_fb_restore_mode(struct drm_device *dev) struct drm_mode_config *config = &dev->mode_config; struct drm_plane *plane; + dev_info(&dev->pdev->dev, "intel_fb_restore_mode"); mutex_lock(&dev->mode_config.mutex); ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper); diff --git a/drivers/pci/hotplug/acpi_pcihp.c b/drivers/pci/hotplug/acpi_pcihp.c index 2a47e82..7ec01e2 100644 --- a/drivers/pci/hotplug/acpi_pcihp.c +++ b/drivers/pci/hotplug/acpi_pcihp.c @@ -44,7 +44,7 @@ #define METHOD_NAME__SUN "_SUN" #define METHOD_NAME_OSHP "OSHP" -static bool debug_acpi; +static bool debug_acpi = true; static acpi_status decode_type0_hpx_record(union acpi_object *record, struct hotplug_params *hpx) diff --git a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c index 96316b7..27930766 100644 --- a/drivers/pci/hotplug/acpiphp_core.c +++ b/drivers/pci/hotplug/acpiphp_core.c @@ -47,7 +47,7 @@ /* name size which is used for entries in pcihpfs */ #define SLOT_NAME_SIZE 21 /* {_SUN} */ -bool acpiphp_debug; +bool acpiphp_debug = true; /* local variables */ static int num_slots; @@ -272,13 +272,16 @@ static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value) return 0; } +extern void bh_check_bridge(char *); static int __init init_acpi(void) { int retval; + bh_check_bridge("init_acpi 1"); /* initialize internal data structure etc. */ retval = acpiphp_glue_init(); + bh_check_bridge("init_acpi 2"); /* read initial number of slots */ if (!retval) { num_slots = acpiphp_get_num_slots(); @@ -288,6 +291,7 @@ static int __init init_acpi(void) } } + bh_check_bridge("init_acpi 3"); return retval; } @@ -312,6 +316,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot) int retval = -ENOMEM; char name[SLOT_NAME_SIZE]; + bh_check_bridge("acpiphp_register_hotplug_slot 1"); slot = kzalloc(sizeof(*slot), GFP_KERNEL); if (!slot) goto error; @@ -335,6 +340,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot) acpiphp_slot->slot = slot; snprintf(name, SLOT_NAME_SIZE, "%llu", slot->acpi_slot->sun); + bh_check_bridge("acpiphp_register_hotplug_slot 2"); retval = pci_hp_register(slot->hotplug_slot, acpiphp_slot->bridge->pci_bus, acpiphp_slot->device, @@ -347,6 +353,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot) } info("Slot [%s] registered\n", slot_name(slot)); + bh_check_bridge("acpiphp_register_hotplug_slot 3"); return 0; error_hpslot: diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index c0f6e6e..280051d 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -115,6 +115,16 @@ static const struct acpi_dock_ops acpiphp_dock_ops = { .handler = handle_hotplug_event_func, }; +void bh_check_bridge(char *desc) +{ + struct pci_dev *dev; + + dev = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0)); + printk("%s: bridge %s at 0x%p\n", desc, + dev ? pci_name(dev) : "(null)", dev); + pci_dev_put(dev); +} + /* callback routine to register each ACPI PCI slot object */ static acpi_status register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) @@ -129,6 +139,7 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) struct pci_bus *pbus = bridge->pci_bus; struct pci_dev *pdev; + bh_check_bridge("acpiphp register_slot 1"); if (!acpi_pci_check_ejectable(pbus, handle) && !is_dock_device(handle)) return AE_OK; @@ -144,9 +155,12 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) } } - acpi_evaluate_integer(handle, "_ADR", NULL, &adr); + status = acpi_evaluate_integer(handle, "_ADR", NULL, &adr); device = (adr >> 16) & 0xffff; function = adr & 0xffff; + printk("acpiphp: _ADR status %#x device %#x function %#x\n", + status, device, function); + bh_check_bridge("acpiphp register_slot 2"); newfunc = kzalloc(sizeof(struct acpiphp_func), GFP_KERNEL); if (!newfunc) @@ -206,9 +220,11 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) bridge->nr_slots++; + bh_check_bridge("acpiphp register_slot 3"); dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n", slot->sun, pci_domain_nr(pbus), pbus->number, device); retval = acpiphp_register_hotplug_slot(slot); + bh_check_bridge("acpiphp register_slot 4"); if (retval) { if (retval == -EBUSY) warn("Slot %llu already registered by another " @@ -222,6 +238,7 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) newfunc->slot = slot; list_add_tail(&newfunc->sibling, &slot->funcs); + bh_check_bridge("acpiphp register_slot 5"); pdev = pci_get_slot(pbus, PCI_DEVFN(device, function)); if (pdev) { @@ -260,6 +277,7 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) } else status = AE_OK; + bh_check_bridge("acpiphp register_slot 6"); return status; err_exit: @@ -1459,6 +1477,7 @@ int __init acpiphp_get_num_slots(void) struct acpiphp_bridge *bridge; int num_slots = 0; + bh_check_bridge("acpiphp acpiphp_get_num_slots 1"); list_for_each_entry(bridge, &bridge_list, list) { dbg("Bus %04x:%02x has %d slot%s\n", pci_domain_nr(bridge->pci_bus), @@ -1468,6 +1487,7 @@ int __init acpiphp_get_num_slots(void) } dbg("Total %d slots\n", num_slots); + bh_check_bridge("acpiphp acpiphp_get_num_slots 2"); return num_slots; } diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c index 202f4a9..cc748b9 100644 --- a/drivers/pci/hotplug/pci_hotplug_core.c +++ b/drivers/pci/hotplug/pci_hotplug_core.c @@ -51,7 +51,7 @@ /* local variables */ -static bool debug; +static bool debug = true; #define DRIVER_VERSION "0.5" #define DRIVER_AUTHOR "Greg Kroah-Hartman , Scott Murray " @@ -431,6 +431,7 @@ static struct hotplug_slot *get_slot_from_name (const char *name) * * Returns 0 if successful, anything else for an error. */ +extern void bh_check_bridge(char *); int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name) @@ -457,7 +458,9 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, * driver and call it here again. If we've already created the * pci_slot, the interface will simply bump the refcount. */ + bh_check_bridge("__pci_hp_register 1"); pci_slot = pci_create_slot(bus, devnr, name, slot); + bh_check_bridge("__pci_hp_register 2"); if (IS_ERR(pci_slot)) { result = PTR_ERR(pci_slot); goto out; @@ -473,6 +476,7 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, dbg("Added slot %s to the list\n", name); out: mutex_unlock(&pci_hp_mutex); + bh_check_bridge("__pci_hp_register 3"); return result; } diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 365c6b9..4a21180 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c @@ -38,7 +38,7 @@ #include /* Global variables */ -bool pciehp_debug; +bool pciehp_debug = true; bool pciehp_poll_mode; int pciehp_poll_time; bool pciehp_force; diff --git a/drivers/pci/slot.c b/drivers/pci/slot.c index ac6412f..7d90961 100644 --- a/drivers/pci/slot.c +++ b/drivers/pci/slot.c @@ -244,6 +244,7 @@ static struct pci_slot *get_slot(struct pci_bus *parent, int slot_nr) * %struct pci_bus and bb is the bus number. In other words, the devfn of * the 'placeholder' slot will not be displayed. */ +extern void bh_check_bridge(char *); struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug) @@ -253,6 +254,7 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, int err = 0; char *slot_name = NULL; + bh_check_bridge("pci_create_slot 1"); down_write(&pci_bus_sem); if (slot_nr == -1) @@ -275,6 +277,7 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, goto out; } + bh_check_bridge("pci_create_slot 2"); placeholder: slot = kzalloc(sizeof(*slot), GFP_KERNEL); if (!slot) { @@ -293,6 +296,7 @@ placeholder: goto err; } + bh_check_bridge("pci_create_slot 3"); err = kobject_init_and_add(&slot->kobj, &pci_slot_ktype, NULL, "%s", slot_name); if (err) @@ -305,12 +309,14 @@ placeholder: if (PCI_SLOT(dev->devfn) == slot_nr) dev->slot = slot; + bh_check_bridge("pci_create_slot 4"); dev_dbg(&parent->dev, "dev %02x, created physical slot %s\n", slot_nr, pci_slot_name(slot)); out: kfree(slot_name); up_write(&pci_bus_sem); + bh_check_bridge("pci_create_slot 5"); return slot; err: kfree(slot);