[Bug 88927] [Acer Aspire 4820TG] Kernel: trying to unbind memory from uninitialized GART !; EIP is at radeon_gart_unbind+0xca/0xe0 [radeon]()

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sun Feb 8 11:32:32 PST 2015


https://bugs.freedesktop.org/show_bug.cgi?id=88927

--- Comment #3 from tiagdtd-lava at yahoo.de ---
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-driver-ati/attachments/20150208/82c61516/attachment.html>


More information about the xorg-driver-ati mailing list