I already added these notes to the bug report; just wondering if anyone on the mailing list can tell me what the check I commented out is trying to protect from happening, how important it is, and why it fails under xen, and how it can be worked around correctly:
I found the cause, and a work around that seems to do the job very well for me, however I am completely unsure of the negative implications of what I've done.
I'm sure someones computer would get up and make a trip to taco bell in the early AM if they did this on their computer. This is a definate case of a little bit of knowledge is a very dangerous thing.
I noticed the message in /var/log/dmesg that read: "architecture does not support 28bit PCI busmaster DMA" when booting with the xen kernel.
I downloaded and installed the kernel source RPM and tracked the message down to /usr/src/linux/sound/pci/maestro3.c
I ended up changing the lines that read: /* check, if we can restrict PCI DMA transfers to 28 bits */ if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { snd_printk(KERN_ERR "architecture does not support 28bit PCI busmaster DMA\n"); pci_disable_device(pci); return -ENXIO; }
to read like this (commented out the printk, pci disable and return): /* check, if we can restrict PCI DMA transfers to 28 bits */ if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { //snd_printk(KERN_ERR "architecture does not support 28bit PCI busmaster DMA\n"); //pci_disable_device(pci); //return -ENXIO; }
From there I compiled the module and replaced the existing snd-maestro3.ko
in /lib/modules/2.6.15-1.2032_FC5xen0/kernel/sound/pci and rebooted to reload all the sound modules and now I have good working sound, with no obvious ill effects.