https://bugs.freedesktop.org/show_bug.cgi?id=88927
--- Comment #3 from [email protected] --- I don't know much about the kernel or the acpiphp driver, but I tried to dig around in the kernel to fix this bug. I made a bugfix which works for me. Somebody who knows about the system should have a look at this solution, because I'm just guessing. As far as I can tell everything works great now. The problem seems to be, that the "slot_no_hotplug" in acpiphp_glue.c doesn't go deep enough to check the "ignore_hotplug" flag of the radeon device. I had a look at the remove pci device function and made a patch which does the same iteration through all devices to check the flags. This works great for my Laptop and everything is stable now. This is the patch I came up with: --- drivers/pci/hotplug/acpiphp_glue.c.orig 2015-02-08 19:30:53.630214885 +0100 +++ drivers/pci/hotplug/acpiphp_glue.c 2015-02-08 19:30:25.534214491 +0100 @@ -559,15 +559,36 @@ static void disable_slot(struct acpiphp_ slot->flags &= (~SLOT_ENABLED); } +static bool device_no_hotplug(struct pci_dev *dev) +{ + struct pci_bus *bus = dev->subordinate; + struct pci_dev *child; + + if (!bus) { + return dev->ignore_hotplug; + } + + list_for_each_entry(child, &bus->devices, bus_list) { + if (device_no_hotplug(child)) { + return true; + } + } + + return false; +} + + static bool slot_no_hotplug(struct acpiphp_slot *slot) { struct pci_bus *bus = slot->bus; struct pci_dev *dev; list_for_each_entry(dev, &bus->devices, bus_list) { - if (PCI_SLOT(dev->devfn) == slot->device && dev->ignore_hotplug) - return true; + if (PCI_SLOT(dev->devfn) == slot->device) { + return device_no_hotplug(dev); + } } + return false; } -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
