On Sat, Mar 20, 2010 at 09:18:37PM -0500, Peter Miller wrote:

> # pcidump -xx 0:27:0
> 0:27:0: Intel 82801I HD Audio
>       0x0000: 293e8086 00100006 04030003 00000010
>       0x0010: da500004 00000000 00000000 00000000
>       0x0020: 00000000 00000000 00000000 30f7103c
>       0x0030: 00000000 00000050 00000000 0000020b
>       0x0040: 07000001 00000000 00000000 00008000
>       0x0050: c8426001 00000000 00000000 00000000
>       0x0060: 00817005 00000000 00000000 00000000

address 62h, bit 0: MSI Enable (ME) - R/W
0 = an MSI may not be generated
1 = an MSI will be generated instead of an INTx signal

and indeed, the device is not getting interrupts.  that's why play.samples
and play.errors don't increase.

can you see if the following fixes the problem?  include new pcidump
if it doesn't please.

-- 
jake...@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org

Index: azalia.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.c,v
retrieving revision 1.168
diff -u -p azalia.c
--- azalia.c    21 Mar 2010 15:02:31 -0000      1.168
+++ azalia.c    24 Mar 2010 23:59:26 -0000
@@ -100,6 +100,8 @@ int az_debug = 0;
 #define                ICH_PCI_HDCTL_SIGNALMODE        0x01
 #define ICH_PCI_HDTCSEL        0x44
 #define                ICH_PCI_HDTCSEL_MASK    0x7
+#define ICH_PCI_MMC    0x62
+#define                ICH_PCI_MMC_ME          0x1
 
 /* internal types */
 
@@ -415,7 +417,14 @@ azalia_pci_attach(struct device *parent, struct device
        v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_PCI_HDTCSEL);
        pci_conf_write(pa->pa_pc, pa->pa_tag, ICH_PCI_HDTCSEL,
            v & ~(ICH_PCI_HDTCSEL_MASK));
- 
+
+       /* disable MSI, use INTx instead */
+       if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_INTEL) {
+               reg = azalia_pci_read(pa->pa_pc, pa->pa_tag, ICH_PCI_MMC);
+               reg &= ~(ICH_PCI_MMC_ME);
+               azalia_pci_write(pa->pa_pc, pa->pa_tag, ICH_PCI_MMC, reg);
+       }
+
        /* enable PCIe snoop */
        switch (PCI_PRODUCT(pa->pa_id)) {
        case PCI_PRODUCT_ATI_SB450_HDA:

Reply via email to