From: Glauber Costa <gcosta@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: akpm@linux-foundation.org, glommer@gmail.com, mingo@elte.hu,
tglx@linutronix.de, kvm-devel@lists.sourceforge.net,
amit.shah@qumranet.com, avi@qumranet.com,
Glauber Costa <gcosta@redhat.com>
Subject: [PATCH 26/28] x86: return conditional to mmu
Date: Tue, 8 Apr 2008 13:21:08 -0300 [thread overview]
Message-ID: <12076718382647-git-send-email-gcosta@redhat.com> (raw)
In-Reply-To: <12076716702129-git-send-email-gcosta@redhat.com>
Just return our allocation if we don't have an mmu. For i386, where this patch
is being applied, we never have. So our goal is just to have the code to look like
x86_64's.
Signed-off-by: Glauber Costa <gcosta@redhat.com>
---
arch/x86/kernel/pci-dma_32.c | 34 ++++++++++++++++++++++++++++++++--
1 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/pci-dma_32.c b/arch/x86/kernel/pci-dma_32.c
index 5450bd1..f134de3 100644
--- a/arch/x86/kernel/pci-dma_32.c
+++ b/arch/x86/kernel/pci-dma_32.c
@@ -116,12 +116,42 @@ again:
gfp = (gfp & ~GFP_DMA32) | GFP_DMA;
goto again;
}
+
+ /* Let low level make its own zone decisions */
+ gfp &= ~(GFP_DMA32|GFP_DMA);
+
+ if (dma_ops->alloc_coherent)
+ return dma_ops->alloc_coherent(dev, size,
+ dma_handle, gfp);
+ return NULL;
+
}
memset(ret, 0, size);
- *dma_handle = bus;
+ if (!mmu) {
+ *dma_handle = bus;
+ return ret;
+ }
+ }
+
+ if (dma_ops->alloc_coherent) {
+ free_pages((unsigned long)ret, get_order(size));
+ gfp &= ~(GFP_DMA|GFP_DMA32);
+ return dma_ops->alloc_coherent(dev, size, dma_handle, gfp);
+ }
+
+ if (dma_ops->map_simple) {
+ *dma_handle = dma_ops->map_simple(dev, virt_to_phys(ret),
+ size,
+ PCI_DMA_BIDIRECTIONAL);
+ if (*dma_handle != bad_dma_address)
+ return ret;
}
- return ret;
+ if (panic_on_overflow)
+ panic("dma_alloc_coherent: IOMMU overflow by %lu bytes\n",
+ (unsigned long)size);
+ free_pages((unsigned long)ret, get_order(size));
+ return NULL;
}
EXPORT_SYMBOL(dma_alloc_coherent);
--
1.5.0.6
next prev parent reply other threads:[~2008-04-08 16:21 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-08 16:20 [PATCH 0/28] integrate dma_ops Glauber Costa
2008-04-08 16:20 ` [PATCH 01/28] x86: introduce pci-dma.c Glauber Costa
2008-04-08 16:20 ` [PATCH 02/28] x86: delete empty functions from pci-nommu_64.c Glauber Costa
2008-04-08 16:20 ` [PATCH 03/28] x86: implement mapping_error in pci-nommu_64.c Glauber Costa
2008-04-08 16:20 ` [PATCH 04/28] x86: Add flush_write_buffers in nommu functions Glauber Costa
2008-04-08 16:20 ` [PATCH 05/28] x86: use sg_phys in x86_64 Glauber Costa
2008-04-08 16:20 ` [PATCH 06/28] x86: use dma_length in i386 Glauber Costa
2008-04-08 16:20 ` [PATCH 07/28] x86: use WARN_ON in mapping functions Glauber Costa
2008-04-08 16:20 ` [PATCH 08/28] x86: move definition to pci-dma.c Glauber Costa
2008-04-08 16:20 ` [PATCH 09/28] x86: move initialization functions " Glauber Costa
2008-04-08 16:20 ` [PATCH 10/28] x86: unify pci-nommu Glauber Costa
2008-04-08 16:20 ` [PATCH 11/28] x86: move pci fixup to pci-dma.c Glauber Costa
2008-04-08 16:20 ` [PATCH 12/28] x86: move x86_64-specific to common code Glauber Costa
2008-04-08 16:20 ` [PATCH 13/28] x86: merge dma_supported Glauber Costa
2008-04-08 16:20 ` [PATCH 14/28] x86: merge iommu initialization parameters Glauber Costa
2008-04-08 16:20 ` [PATCH 15/28] x86: move dma_coherent functions to pci-dma.c Glauber Costa
2008-04-08 16:20 ` [PATCH 16/28] x86: isolate coherent mapping functions Glauber Costa
2008-04-08 16:20 ` [PATCH 17/28] x86: adjust dma_free_coherent for i386 Glauber Costa
2008-04-08 16:21 ` [PATCH 18/28] x86: move bad_dma_address Glauber Costa
2008-04-08 16:21 ` [PATCH 19/28] x86: remove virt_to_bus in pci-dma_64.c Glauber Costa
2008-04-08 16:21 ` [PATCH 20/28] x86: use numa allocation function in i386 Glauber Costa
2008-04-08 16:21 ` [PATCH 21/28] x86: retry allocation if failed Glauber Costa
2008-04-08 16:21 ` [PATCH 22/28] x86: use a fallback dev for i386 Glauber Costa
2008-04-08 16:21 ` [PATCH 23/28] x86: don't try to allocate from DMA zone at first Glauber Costa
2008-04-08 16:21 ` [PATCH 24/28] x86: unify gfp masks Glauber Costa
2008-04-08 16:21 ` [PATCH 25/28] x86: remove kludge from x86_64 Glauber Costa
2008-04-08 16:21 ` Glauber Costa [this message]
2008-04-08 16:21 ` [PATCH 27/28] x86: don't do dma if mask is NULL Glauber Costa
2008-04-08 16:21 ` [PATCH 28/28] x86: integrate pci-dma.c Glauber Costa
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=12076718382647-git-send-email-gcosta@redhat.com \
--to=gcosta@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=amit.shah@qumranet.com \
--cc=avi@qumranet.com \
--cc=glommer@gmail.com \
--cc=kvm-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox