On amd64 r238558M
(M is John Baldwin's pci.c patch, see at the end).

I've
 hdac0: <ATI SB600 HDA Controller> mem 0xc0000000-0xc0003fff irq 16 at device 
20.2 on pci0

which seems to work fine, e.g.
using /dev/dsp

I then run

X -configure

The sound still works fine.

However, as soon as I run
X -config /root/xorg.conf.new -retro

I see on the console:

hdac0: Unexpected unsolicited response from address 0: 04a12020
hdac0: Unexpected unsolicited response from address 0: 00001727
hdac0: Unexpected unsolicited response from address 0: 00000020
hdac0: Unexpected unsolicited response from address 0: 00400187
hdac0: Unexpected unsolicited response from address 0: 00000002
hdac0: Unexpected unsolicited response from address 0: 00000e03
hdac0: Unexpected unsolicited response from address 0: 0181302e
hdac0: Unexpected unsolicited response from address 0: 00001737
hdac0: Unexpected unsolicited response from address 0: 00000020
hdac0: Unexpected unsolicited response from address 0: 00400301
hdac0: Unexpected unsolicited response from address 0: 00000001
hdac0: Unexpected unsolicited response from address 0: 00000002
hdac0: Unexpected unsolicited response from address 0: 4145f0f0
hdac0: Unexpected unsolicited response from address 0: 00000010
hdac0: Unexpected unsolicited response from address 0: 00000040
hdac0: Unexpected unsolicited response from address 0: 00300101
hdac0: Unexpected unsolicited response from address 0: 00000006
hdac0: Unexpected unsolicited response from address 0: 0e090c03
hdac0: Unexpected unsolicited response from address 0: 00001805
hdac0: Unexpected unsolicited response from address 0: 00200101
hdac0: Unexpected unsolicited response from address 0: 00000002
hdac0: Unexpected unsolicited response from address 0: 00001f1e
hdac0: Unexpected unsolicited response from address 0: 0030010c

and another ~50 similar lines,
and the sound no longer works
until I reboot.

I cannot narrow the problem any further.

Please advise

Many thanks

****************************

John Baldwin's pci.c patch:

Index: pci.c
===================================================================
--- pci.c       (revision 235475)
+++ pci.c       (working copy)
@@ -2815,13 +2815,36 @@ pci_add_map(device_t bus, device_t dev, int reg, s
         */
        res = resource_list_reserve(rl, bus, dev, type, &reg, start, end, count,
            prefetch ? RF_PREFETCHABLE : 0);
+       if (res == NULL && (start != 0 || end != ~0ul)) {
+               /*
+                * If the allocation fails, try to allocate a resource for
+                * this BAR using any available range.  The firmware felt
+                * it was important enough to assign a resource, so don't
+                * disable decoding if we can help it.
+                */
+               resource_list_delete(rl, type, reg);
+               start = 0;
+               end = ~0ul;
+               resource_list_add(rl, type, reg, 0, ~0ul, count);
+               resource_list_add(rl, type, reg, start, end, count);
+               res = resource_list_reserve(rl, bus, dev, type, &reg, 0, ~0ul,
+                   count, prefetch ? RF_PREFETCHABLE : 0);
+       }
        if (res == NULL) {
                /*
                 * If the allocation fails, delete the resource list entry
-                * to force pci_alloc_resource() to allocate resources
-                * from the parent.
+                * and disable decoding for this device.
+                *
+                * If the driver requests this resource in the future,
+                * pci_reserve_map() will try to allocate fresh resources.
                 */
                resource_list_delete(rl, type, reg);
+               pci_disable_io(dev, type);
+               start = 0;
+               device_printf(bus,
+                   "pci%d:%d:%d:%d bar %#x failed to allocate",
+                   pci_get_domain(dev), pci_get_bus(dev), pci_get_slot(dev),
+                   pci_get_function(dev), reg);
        } else {
                start = rman_get_start(res);
                pci_write_bar(dev, pm, start);


-- 
Anton Shterenlikht
Room 2.6, Queen's Building
Mech Eng Dept
Bristol University
University Walk, Bristol BS8 1TR, UK
Tel: +44 (0)117 331 5944
Fax: +44 (0)117 929 4423
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[email protected]"

Reply via email to