All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Takashi Iwai <tiwai@suse.de>
Cc: Rene Herman <rene.herman@keyaccess.nl>,
	Glauber Costa <gcosta@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Pete Clements <clem@clem.clem-digital.net>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	ALSA devel <alsa-devel@alsa-project.org>,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: 2.6.26-rc1 regression: ISA DMA broken (bisected)
Date: Fri, 9 May 2008 10:58:24 +0200	[thread overview]
Message-ID: <20080509085824.GF2592@elte.hu> (raw)
In-Reply-To: <20080509085511.GE2592@elte.hu>


* Ingo Molnar <mingo@elte.hu> wrote:

> good catch! Queued it up for testing. Jesse, do you concur?

here's the patch below, tidied up.

	Ingo

------------------------------->
Subject: x86/pci: fix broken ISA DMA
From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 09 May 2008 08:06:55 +0200

Rene Herman reported:

> commit 8779f2fc3b84ebb6c5181fb13d702e9944c16069
>
> "x86: don't try to allocate from DMA zone at first"
>
> breaks all of ISA DMA. Or all of ALSA ISA DMA at least. All
> ISA soundcards are silent following that commit -- no error
> messages, everything appears fine, just silence.

That patch is buggy. We had an implicit assumption that
dev = NULL for ISA devices that require 24bit DMA.

The recent work on x86 dma_alloc_coherent() breaks the ISA DMA buffer
allocation, which is represented by "dev = NULL" and requires 24bit
DMA implicitly.

Bisected-by: Rene Herman <rene.herman@keyaccess.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/kernel/pci-dma.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Index: linux-x86.q/arch/x86/kernel/pci-dma.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/pci-dma.c
+++ linux-x86.q/arch/x86/kernel/pci-dma.c
@@ -386,11 +386,13 @@ dma_alloc_coherent(struct device *dev, s
 	if (dma_alloc_from_coherent_mem(dev, size, dma_handle, &memory))
 		return memory;
 
-	if (!dev)
+	if (!dev) {
 		dev = &fallback_dev;
+		gfp |= GFP_DMA;
+	}
 	dma_mask = dev->coherent_dma_mask;
 	if (dma_mask == 0)
-		dma_mask = DMA_32BIT_MASK;
+		dma_mask = (gfp & GFP_DMA) ? DMA_24BIT_MASK : DMA_32BIT_MASK;
 
 	/* Device not DMA able */
 	if (dev->dma_mask == NULL)
@@ -404,7 +406,7 @@ dma_alloc_coherent(struct device *dev, s
 	   larger than 16MB and in this case we have a chance of
 	   finding fitting memory in the next higher zone first. If
 	   not retry with true GFP_DMA. -AK */
-	if (dma_mask <= DMA_32BIT_MASK)
+	if (dma_mask <= DMA_32BIT_MASK && !(gfp & GFP_DMA))
 		gfp |= GFP_DMA32;
 #endif
 

  reply	other threads:[~2008-05-09  8:58 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-09  1:37 2.6.26-rc1 regression: ISA DMA broken (bisected) Rene Herman
2008-05-09  1:37 ` Rene Herman
2008-05-09  6:06 ` Takashi Iwai
2008-05-09  6:06   ` Takashi Iwai
2008-05-09  8:55   ` Ingo Molnar
2008-05-09  8:55     ` Ingo Molnar
2008-05-09  8:58     ` Ingo Molnar [this message]
2008-05-09 17:20       ` Jesse Barnes
2008-05-09 12:03   ` Rene Herman
2008-05-09 12:03     ` Rene Herman
2008-05-09 12:28     ` Ingo Molnar
2008-05-09 12:28       ` Ingo Molnar
2008-05-09 23:00       ` Rene Herman
2008-05-09 23:00         ` Rene Herman
2008-05-13 14:36         ` Ingo Molnar
2008-05-13 14:36           ` Ingo Molnar
2008-05-13 15:26           ` Rene Herman
2008-05-09 12:29     ` Pete Clements
2008-05-09 12:29       ` Pete Clements
2008-05-09 12:48   ` Glauber Costa
2008-05-13 16:59   ` Bjorn Helgaas
2008-05-13 16:59     ` Bjorn Helgaas
2008-05-13 17:01     ` Alan Cox
2008-05-13 17:01       ` Alan Cox
2008-05-13 17:33       ` Rene Herman
2008-05-13 17:33         ` Rene Herman
2008-05-13 23:18         ` Bjorn Helgaas
2008-05-13 23:18           ` Bjorn Helgaas
2008-05-14  9:25           ` Takashi Iwai
2008-05-14  9:25             ` Takashi Iwai
2008-05-14 12:46           ` Rene Herman
2008-05-14 12:46             ` Rene Herman
2008-05-14 13:01             ` Takashi Iwai
2008-05-14 15:40               ` Rene Herman
2008-05-14 15:40                 ` Rene Herman
2008-05-14 15:53                 ` Takashi Iwai
2008-05-14 15:53                   ` Takashi Iwai
2008-05-14 18:41                 ` Rene Herman
2008-05-14 18:50                   ` Bjorn Helgaas
2008-05-14 19:09                     ` Rene Herman
2008-05-14 19:09                       ` Rene Herman
2008-05-30 21:15                       ` [PATCH] " Rene Herman
2008-05-30 21:15                         ` Rene Herman
2008-05-30 21:28                         ` [DEVICE MODEL] dev->dma_mask Rene Herman
2008-05-30 21:28                           ` Rene Herman
2008-05-30 21:43                         ` [PATCH] Re: 2.6.26-rc1 regression: ISA DMA broken (bisected) Bjorn Helgaas
2008-05-30 21:43                           ` Bjorn Helgaas
2008-05-30 22:11                           ` Rene Herman
2008-05-30 22:11                             ` Rene Herman
2008-05-30 22:37                             ` [PATCH] ISA: set 24-bit dma_mask for ISA devices Rene Herman
2008-05-30 22:37                               ` Rene Herman
2008-05-30 22:55                               ` Andrew Morton
2008-05-30 22:55                                 ` Andrew Morton
2008-05-30 23:50                                 ` Rene Herman
2008-05-30 23:50                                   ` Rene Herman
2008-05-30 23:54                             ` [PATCH] PNP: set the pnp_card dma_mask for use by ISAPnP cards Rene Herman
2008-05-30 23:54                               ` Rene Herman
2008-05-31  8:55                               ` Takashi Iwai
2008-05-31  8:55                                 ` Takashi Iwai
2008-05-30 23:55                             ` [PATCH] ISA: set 24-bit dma_mask for ISA devices Rene Herman
2008-05-30 23:55                               ` Rene Herman
2008-05-31  8:56                               ` Takashi Iwai
2008-05-31  8:56                                 ` Takashi Iwai
2008-05-14 15:26             ` 2.6.26-rc1 regression: ISA DMA broken (bisected) Bjorn Helgaas
2008-05-14 15:26               ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080509085824.GF2592@elte.hu \
    --to=mingo@elte.hu \
    --cc=alsa-devel@alsa-project.org \
    --cc=clem@clem.clem-digital.net \
    --cc=gcosta@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rene.herman@keyaccess.nl \
    --cc=tglx@linutronix.de \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.