On Mon, Jul 09, 2018 at 11:38:13AM +1000, Jonathan Gray wrote: > On Sun, Jul 08, 2018 at 12:15:39PM -0700, Thomas Frohwein wrote: > > Hi, > > > > It appears that HD Audio from AMD's generation Ryzen can't handle MSI. > > This leads to the bug that I reported here: > > > > https://marc.info/?l=openbsd-bugs&m=151648196215922&w=2 > > > > Disabling MSI resolves the problem on my current system which is a Raven > > Ridge APU. I don't have the Summit Ridge hardware anymore to test that > > it is also resolved there, but the line is included in the diff > > (PCI_PRODUCT_AMD_AMD64_17_HDA). It seems likely that this diff will also > > fix HD Audio on Summit Ridge. However, testing would be welcome by > > anyone who has a first-gen Ryzen. > > > > I was slightly confused by the fact that so far it seems I've been the > > only one who reported this. Even searching online for such an issue in > > other OS didn't yield anything. However, the issue was there between 2 > > different Ryzen CPUs, 3 different motherboards, and at least 2 separate > > OpenBSD -current installations. And it was never there on any > > Intel-based setup, with otherwise same hardware and OpenBSD install. > > While there have been several reports of people using Ryzen with > > OpenBSD, they may not have used audio (that's my explanation for this > > at the moment). > > > > This diff was collaborative work with brynet@. > > > > ok? > > Does following the HUDSON2_HDA case and enabling pcie snooping > instead change anything?
I had suggested this to Thomas and he said it had no effect for him, unfortunately. > > > > Index: azalia.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/pci/azalia.c,v > > retrieving revision 1.244 > > diff -u -p -r1.244 azalia.c > > --- azalia.c 22 Apr 2018 10:02:13 -0000 1.244 > > +++ azalia.c 7 Jul 2018 18:26:20 -0000 > > @@ -517,6 +517,15 @@ azalia_pci_attach(struct device *parent, > > azalia_pci_write(sc->pc, sc->tag, ICH_PCI_MMC, reg); > > } > > > > + /* disable MSI for AMD Summit Ridge/Raven Ridge HD Audio */ > > + if (PCI_VENDOR(sc->pciid) == PCI_VENDOR_AMD) { > > + switch (PCI_PRODUCT(sc->pciid)) { > > + case PCI_PRODUCT_AMD_AMD64_17_HDA: > > + case PCI_PRODUCT_AMD_RAVENRIDGE_HDA: > > + pa->pa_flags &= ~PCI_FLAGS_MSI_ENABLED; > > + } > > + } > > + > > /* interrupt */ > > if (pci_intr_map_msi(pa, &ih) && pci_intr_map(pa, &ih)) { > > printf(": can't map interrupt\n"); > > > >