From: Ian Campbell <ian.campbell@citrix.com>
To: <linux-kernel@vger.kernel.org>
Cc: Ian Campbell <ian.campbell@citrix.com>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
Jeremy Fitzhardinge <jeremy@goop.org>, <x86@kernel.org>
Subject: [PATCH 4/9] x86: use dma_map_range when allocating PCI DMA memory with no IOMMU
Date: Fri, 29 May 2009 09:43:58 +0100 [thread overview]
Message-ID: <1243586643-5554-5-git-send-email-ian.campbell@citrix.com> (raw)
In-Reply-To: <1243586643-5554-1-git-send-email-ian.campbell@citrix.com>
Replaces use of is_buffer_dma_capable which is going away.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: x86@kernel.org
---
arch/x86/kernel/pci-nommu.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kernel/pci-nommu.c b/arch/x86/kernel/pci-nommu.c
index 71d412a..a3a61dd 100644
--- a/arch/x86/kernel/pci-nommu.c
+++ b/arch/x86/kernel/pci-nommu.c
@@ -12,13 +12,14 @@
#include <asm/dma.h>
static int
-check_addr(char *name, struct device *hwdev, dma_addr_t bus, size_t size)
+check_addr(char *name, struct device *hwdev, phys_addr_t phys, size_t size, dma_addr_t *bus)
{
- if (hwdev && !is_buffer_dma_capable(*hwdev->dma_mask, bus, size)) {
+ if (hwdev &&
+ !dma_map_range(hwdev, *hwdev->dma_mask, phys, size, bus)) {
if (*hwdev->dma_mask >= DMA_BIT_MASK(32))
printk(KERN_ERR
"nommu_%s: overflow %Lx+%zu of device mask %Lx\n",
- name, (long long)bus, size,
+ name, (long long)phys, size,
(long long)*hwdev->dma_mask);
return 0;
}
@@ -30,9 +31,10 @@ static dma_addr_t nommu_map_page(struct device *dev, struct page *page,
enum dma_data_direction dir,
struct dma_attrs *attrs)
{
- dma_addr_t bus = page_to_phys(page) + offset;
+ phys_addr_t phys = page_to_phys(page) + offset;
+ dma_addr_t bus;
WARN_ON(size == 0);
- if (!check_addr("map_single", dev, bus, size))
+ if (!check_addr("map_single", dev, phys, size, &bus))
return bad_dma_address;
flush_write_buffers();
return bus;
@@ -64,8 +66,7 @@ static int nommu_map_sg(struct device *hwdev, struct scatterlist *sg,
for_each_sg(sg, s, nents, i) {
BUG_ON(!sg_page(s));
- s->dma_address = sg_phys(s);
- if (!check_addr("map_sg", hwdev, s->dma_address, s->length))
+ if (!check_addr("map_sg", hwdev, sg_phys(s), s->length, &s->dma_address))
return 0;
s->dma_length = s->length;
}
--
1.5.6.5
next prev parent reply other threads:[~2009-05-29 8:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-29 8:43 Ian Campbell
2009-05-29 8:43 ` [PATCH 1/9] ia64: introduce arch-specific dma-mapping interfaces Ian Campbell
2009-05-29 8:43 ` [PATCH 2/9] x86: introduce arch-specific dma-mapping interface Ian Campbell
2009-05-29 8:43 ` [PATCH 3/9] x86: use dma_map_range when allocating PCI DMA memory Ian Campbell
2009-05-29 8:43 ` Ian Campbell [this message]
2009-05-29 8:43 ` [PATCH 5/9] x86: use dma_map_range when allocating PCI GART memory Ian Campbell
2009-05-29 8:44 ` [PATCH 6/9] swiotlb: use dma_to_phys and phys_to_dma Ian Campbell
2009-05-29 21:09 ` Jeremy Fitzhardinge
2009-05-30 13:02 ` Ian Campbell
2009-05-29 8:44 ` [PATCH 7/9] swiotlb: use dma_map_range Ian Campbell
2009-05-29 8:44 ` [PATCH 8/9] swiotlb: support HIGHMEM in swiotlb_bus_to_virt Ian Campbell
2009-05-29 15:58 ` Jeremy Fitzhardinge
2009-05-30 13:02 ` Ian Campbell
2009-05-29 8:44 ` [PATCH 9/9] swiotlb: rename swiotlb_virt_to_bus as virt_to_dma Ian Campbell
2009-05-29 9:06 ` swiotlb: Introduce architecture-specific APIs to replace __weak functions Ian Campbell
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=1243586643-5554-5-git-send-email-ian.campbell@citrix.com \
--to=ian.campbell@citrix.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
/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