Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.10-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ALSA: ctxfi: Fallback DMA mask to 32bit
to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
alsa-ctxfi-fallback-dma-mask-to-32bit.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
15c75b09f8d190f89ab4db463b87d411ca349dfeMon Sep 17 00:00:00 2001
From: Takashi Iwai <[email protected]>
Date: Tue, 28 Feb 2017 17:16:48 +0100
Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
From: Takashi Iwai <[email protected]>
commit 15c75b09f8d190f89ab4db463b87d411ca349dfe upstream.
Currently ctxfi driver tries to set only the 64bit DMA mask on 64bit architectures, and bails out if it fails. This causes a problem on some platforms since the 64bit DMA isn't always guaranteed. We should fall back to the default 32bit DMA when 64bit DMA fails.
--- sound/pci/ctxfi/cthw20k1.c | 19 ++++++------------- sound/pci/ctxfi/cthw20k2.c | 19 ++++++------------- 2 files changed, 12 insertions(+), 26 deletions(-)
sound/pci/ctxfi/cthw20k1.c +6 -13
@@ -27,12 +27,6 @@#include "cthw20k1.h" #include "ct20k1reg.h" -#if BITS_PER_LONG ==32 -#define CT_XFI_DMA_MASK DMA_BIT_MASK(32)/* 32 bit PTE */ -#else -#define CT_XFI_DMA_MASK DMA_BIT_MASK(64)/* 64 bit PTE */ -#endif -struct hw20k1 {struct hw hw;spinlock_t reg_20k1_lock;
@@ -1904,19 +1898,18 @@ static int hw_card_start(struct hw *hw) {int err;struct pci_dev *pci = hw->pci; +const unsigned int dma_bits =BITS_PER_LONG ; err =pci_enable_device (pci);if (err <0 )return err;/* Set DMA transfer mask */ -if (dma_set_mask (&pci->dev,CT_XFI_DMA_MASK ) <0 || -dma_set_coherent_mask (&pci->dev,CT_XFI_DMA_MASK ) <0 ) { -dev_err (hw->card->dev, -"architecture does not support PCI busmaster DMA with mask 0x%llx\n" , -CT_XFI_DMA_MASK ); - err = -ENXIO ; - goto error1; +if (dma_set_mask (&pci->dev,DMA_BIT_MASK (dma_bits))) { +dma_set_coherent_mask (&pci->dev,DMA_BIT_MASK (dma_bits)); + }else { +dma_set_mask (&pci->dev,DMA_BIT_MASK (32 )); +dma_set_coherent_mask (&pci->dev,DMA_BIT_MASK (32 )); }if (!hw->io_base) {
sound/pci/ctxfi/cthw20k2.c +6 -13
@@ -26,12 +26,6 @@#include "cthw20k2.h" #include "ct20k2reg.h" -#if BITS_PER_LONG ==32 -#define CT_XFI_DMA_MASK DMA_BIT_MASK(32)/* 32 bit PTE */ -#else -#define CT_XFI_DMA_MASK DMA_BIT_MASK(64)/* 64 bit PTE */ -#endif -struct hw20k2 {struct hw hw;/* for i2c */
@@ -2029,19 +2023,18 @@ static int hw_card_start(struct hw *hw)int err =0 ;struct pci_dev *pci = hw->pci;unsigned int gctl; +const unsigned int dma_bits =BITS_PER_LONG ; err =pci_enable_device (pci);if (err <0 )return err;/* Set DMA transfer mask */ -if (dma_set_mask (&pci->dev,CT_XFI_DMA_MASK ) <0 || -dma_set_coherent_mask (&pci->dev,CT_XFI_DMA_MASK ) <0 ) { -dev_err (hw->card->dev, -"architecture does not support PCI busmaster DMA with mask 0x%llx\n" , -CT_XFI_DMA_MASK ); - err = -ENXIO ; - goto error1; +if (!dma_set_mask (&pci->dev,DMA_BIT_MASK (dma_bits))) { +dma_set_coherent_mask (&pci->dev,DMA_BIT_MASK (dma_bits)); + }else { +dma_set_mask (&pci->dev,DMA_BIT_MASK (32 )); +dma_set_coherent_mask (&pci->dev,DMA_BIT_MASK (32 )); }if (!hw->io_base) {
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/alsa-hda-add-subwoofer-support-for-dell-inspiron-17-7000-gaming.patch queue-4.10/alsa-seq-fix-link-corruption-by-event-error-handling.patch queue-4.10/alsa-hda-fix-micmute-hotkey-problem-for-a-lenovo-aio-machine.patch queue-4.10/alsa-ctxfi-fallback-dma-mask-to-32bit.patch queue-4.10/alsa-timer-reject-user-params-with-too-small-ticks.patch queue-4.10/alsa-hda-fix-lewisburg-audio-issue.patch queue-4.10/alsa-hda-realtek-cannot-adjust-speaker-s-volume-on-a-dell-aio.patch