hdac0: Unexpected unsolicited response from address 0: 04a12020
Anton Shterenlikht
mexas at bristol.ac.uk
Tue Jul 17 23:39:53 UTC 2012
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, ®, 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, ®, 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
More information about the freebsd-x11
mailing list