* Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree
@ 2017-03-08 10:27 gregkh
2017-03-11 15:28 ` Jiri Slaby
0 siblings, 1 reply; 5+ messages in thread
From: gregkh @ 2017-03-08 10:27 UTC (permalink / raw)
To: tiwai, gregkh; +Cc: stable, stable-commits
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.4-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.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.
>From 15c75b09f8d190f89ab4db463b87d411ca349dfe Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Tue, 28 Feb 2017 17:16:48 +0100
Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
From: Takashi Iwai <tiwai@suse.de>
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.
Fixes: 6d74b86d3c0f ("ALSA: ctxfi - Allow 64bit DMA")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/pci/ctxfi/cthw20k1.c | 19 ++++++-------------
sound/pci/ctxfi/cthw20k2.c | 19 ++++++-------------
2 files changed, 12 insertions(+), 26 deletions(-)
--- a/sound/pci/ctxfi/cthw20k1.c
+++ b/sound/pci/ctxfi/cthw20k1.c
@@ -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) {
--- a/sound/pci/ctxfi/cthw20k2.c
+++ b/sound/pci/ctxfi/cthw20k2.c
@@ -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 tiwai@suse.de are
queue-4.4/alsa-hda-add-subwoofer-support-for-dell-inspiron-17-7000-gaming.patch
queue-4.4/alsa-seq-fix-link-corruption-by-event-error-handling.patch
queue-4.4/alsa-hda-fix-micmute-hotkey-problem-for-a-lenovo-aio-machine.patch
queue-4.4/alsa-ctxfi-fallback-dma-mask-to-32bit.patch
queue-4.4/alsa-timer-reject-user-params-with-too-small-ticks.patch
queue-4.4/alsa-hda-fix-lewisburg-audio-issue.patch
queue-4.4/alsa-hda-realtek-cannot-adjust-speaker-s-volume-on-a-dell-aio.patch
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree
2017-03-08 10:27 Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree gregkh
@ 2017-03-11 15:28 ` Jiri Slaby
2017-03-12 5:20 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Jiri Slaby @ 2017-03-11 15:28 UTC (permalink / raw)
To: gregkh, tiwai; +Cc: stable, stable-commits
On 03/08/2017, 11:27 AM, gregkh@linuxfoundation.org wrote:
> From 15c75b09f8d190f89ab4db463b87d411ca349dfe Mon Sep 17 00:00:00 2001
> From: Takashi Iwai <tiwai@suse.de>
> Date: Tue, 28 Feb 2017 17:16:48 +0100
> Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
>
> From: Takashi Iwai <tiwai@suse.de>
>
> 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.
>
> Fixes: 6d74b86d3c0f ("ALSA: ctxfi - Allow 64bit DMA")
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
...
> @@ -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))) {
I believe the condition is inverted here.
> + 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));
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree
2017-03-11 15:28 ` Jiri Slaby
@ 2017-03-12 5:20 ` Greg KH
2017-03-12 8:30 ` Jiri Slaby
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2017-03-12 5:20 UTC (permalink / raw)
To: Jiri Slaby; +Cc: tiwai, stable, stable-commits
On Sat, Mar 11, 2017 at 04:28:53PM +0100, Jiri Slaby wrote:
> On 03/08/2017, 11:27 AM, gregkh@linuxfoundation.org wrote:
> > From 15c75b09f8d190f89ab4db463b87d411ca349dfe Mon Sep 17 00:00:00 2001
> > From: Takashi Iwai <tiwai@suse.de>
> > Date: Tue, 28 Feb 2017 17:16:48 +0100
> > Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
> >
> > From: Takashi Iwai <tiwai@suse.de>
> >
> > 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.
> >
> > Fixes: 6d74b86d3c0f ("ALSA: ctxfi - Allow 64bit DMA")
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ...
> > @@ -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))) {
>
> I believe the condition is inverted here.
>
> > + 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));
As this matches what is in Linus's tree, that means I didn't mess up the
backport :)
But I don't understand the issue, what is wrong here? Should it try 32
first?
Takashi, any thoughts?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree
2017-03-12 5:20 ` Greg KH
@ 2017-03-12 8:30 ` Jiri Slaby
2017-03-20 6:36 ` Takashi Iwai
0 siblings, 1 reply; 5+ messages in thread
From: Jiri Slaby @ 2017-03-12 8:30 UTC (permalink / raw)
To: Greg KH; +Cc: tiwai, stable, stable-commits
On 03/12/2017, 06:20 AM, Greg KH wrote:
> On Sat, Mar 11, 2017 at 04:28:53PM +0100, Jiri Slaby wrote:
>> On 03/08/2017, 11:27 AM, gregkh@linuxfoundation.org wrote:
>>> From 15c75b09f8d190f89ab4db463b87d411ca349dfe Mon Sep 17 00:00:00 2001
>>> From: Takashi Iwai <tiwai@suse.de>
>>> Date: Tue, 28 Feb 2017 17:16:48 +0100
>>> Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
>>>
>>> From: Takashi Iwai <tiwai@suse.de>
>>>
>>> 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.
>>>
>>> Fixes: 6d74b86d3c0f ("ALSA: ctxfi - Allow 64bit DMA")
>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> ...
>>> @@ -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))) {
>>
>> I believe the condition is inverted here.
>>
>>> + 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));
>
> As this matches what is in Linus's tree, that means I didn't mess up the
> backport :)
Sure, I didn't mean to point out your failure, rather Takashi wrote the
check wrong :). I found it in 4.4 patches while applying them, so I
replied to that particular one.
> But I don't understand the issue, what is wrong here? Should it try 32
> first?
It should be:
dma_set_mask(dma_bits) fails => fall back to 32 bits
dma_set_mask(dma_bits) does not fail => set also the coherent mask
As it stands now, it is the opposite.
> Takashi, any thoughts?
IMO, it should write:
> if (!dma_set_mask(&pci->dev, DMA_BIT_MASK(dma_bits))) {
> dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(dma_bits));
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree
2017-03-12 8:30 ` Jiri Slaby
@ 2017-03-20 6:36 ` Takashi Iwai
0 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2017-03-20 6:36 UTC (permalink / raw)
To: Jiri Slaby; +Cc: Greg KH, stable, stable-commits
On Sun, 12 Mar 2017 09:30:47 +0100,
Jiri Slaby wrote:
>
> On 03/12/2017, 06:20 AM, Greg KH wrote:
> > On Sat, Mar 11, 2017 at 04:28:53PM +0100, Jiri Slaby wrote:
> >> On 03/08/2017, 11:27 AM, gregkh@linuxfoundation.org wrote:
> >>> From 15c75b09f8d190f89ab4db463b87d411ca349dfe Mon Sep 17 00:00:00 2001
> >>> From: Takashi Iwai <tiwai@suse.de>
> >>> Date: Tue, 28 Feb 2017 17:16:48 +0100
> >>> Subject: ALSA: ctxfi: Fallback DMA mask to 32bit
> >>>
> >>> From: Takashi Iwai <tiwai@suse.de>
> >>>
> >>> 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.
> >>>
> >>> Fixes: 6d74b86d3c0f ("ALSA: ctxfi - Allow 64bit DMA")
> >>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> >>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >> ...
> >>> @@ -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))) {
> >>
> >> I believe the condition is inverted here.
> >>
> >>> + 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));
> >
> > As this matches what is in Linus's tree, that means I didn't mess up the
> > backport :)
>
> Sure, I didn't mean to point out your failure, rather Takashi wrote the
> check wrong :).
Sorry for the late response, as I've been on vacation over two weeks.
And another sorry about the patch -- it's simply an incorrect cut &
paste & modify sequence.
I'll queue up the correction patch for the next 4.11-rc soon later.
thanks,
Takashi
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-03-20 6:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-08 10:27 Patch "ALSA: ctxfi: Fallback DMA mask to 32bit" has been added to the 4.4-stable tree gregkh
2017-03-11 15:28 ` Jiri Slaby
2017-03-12 5:20 ` Greg KH
2017-03-12 8:30 ` Jiri Slaby
2017-03-20 6:36 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.