Re: [PATCH]: x86_64, audio: Fix system panic when DMA > 40 bits

From: David Henningsson
Date: Thu May 02 2013 - 04:29:47 EST


On 05/02/2013 08:36 AM, Mike Travis wrote:


On 5/1/2013 11:20 PM, David Henningsson wrote:
On 05/01/2013 09:04 PM, Mike Travis wrote:
The audio driver mistakenly allows 64 bit addresses to be created for
the audio driver on Nvidia GPUs. Unfortunately, the hardware normally
only supports up to 40 bits of DMA. This can cause system panics as
well as misdirected data when the address is > 40 bits as the upper
part the address is truncated.

Thanks for this patch. Stephen Warren, is this something you can
confirm/deny, and do you know what range of hardware this actually
applies to?

The dma_mask can be read from the gpu device's pci entry. I know it's
a stretch to try to link to that but past history has shown that it
ranges from 36 to 40 bits.

Ok, so the below patch is some kind of workaround, as we don't currently take the dma_mask into account correctly? Or put in another way, would it be possible/better to actually read the dma_mask and use that instead of just clamping at 32 bit?




Signed-off-by: Mike Travis <travis@xxxxxxx>
Reviewed-by: Mike Habeck <habeck@xxxxxxx>
---
sound/pci/hda/hda_intel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index bcd40ee..45eb165 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -615,7 +615,7 @@ enum {
/* quirks for Nvidia */
#define AZX_DCAPS_PRESET_NVIDIA \
(AZX_DCAPS_NVIDIA_SNOOP | AZX_DCAPS_RIRB_DELAY |
AZX_DCAPS_NO_MSI |\
- AZX_DCAPS_ALIGN_BUFSIZE)
+ AZX_DCAPS_ALIGN_BUFSIZE | AZX_DCAPS_NO_64BIT)

#define AZX_DCAPS_PRESET_CTHDA \
(AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB |
AZX_DCAPS_4K_BDLE_BOUNDARY)








--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/