From: Ian Campbell <Ian.Campbell@citrix.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: jeremy@goop.org, mingo@elte.hu, linux-kernel@vger.kernel.org,
xen-devel@lists.xensource.com, x86@kernel.org
Subject: Re: [PATCH 04 of 38] swiotlb: move some definitions to header
Date: Mon, 17 Nov 2008 11:52:28 +0000 [thread overview]
Message-ID: <1226922748.18916.28.camel@zakaz.uk.xensource.com> (raw)
In-Reply-To: <20081117120246K.fujita.tomonori@lab.ntt.co.jp>
On Mon, 2008-11-17 at 12:48 +0900, FUJITA Tomonori wrote:
> Why do we need to export IO_TLB_SEGSIZE and IO_TLB_SHIFT to everyone
> in include/linux?
A subsequent Xen patch needs to make use of them, although I can't see
it in the patchset Jeremy posted so here it is (not fully baked yet)
Subject: xen swiotlb: fixup swiotlb is chunks smaller than MAX_CONTIG_ORDER
From: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
arch/x86/kernel/pci-swiotlb_64.c | 7 +------
drivers/pci/xen-iommu.c | 30 ++++++++++++++++++++----------
2 files changed, 21 insertions(+), 16 deletions(-)
===================================================================
--- a/arch/x86/kernel/pci-swiotlb_64.c
+++ b/arch/x86/kernel/pci-swiotlb_64.c
@@ -28,12 +28,7 @@
void *swiotlb_alloc(unsigned order, unsigned long nslabs)
{
- void *ret = (void *)__get_free_pages(GFP_DMA | __GFP_NOWARN, order);
-
- if (ret && xen_pv_domain())
- xen_swiotlb_fixup(ret, 1u << order, nslabs);
-
- return ret;
+ BUG();
}
static dma_addr_t
===================================================================
--- a/drivers/pci/xen-iommu.c
+++ b/drivers/pci/xen-iommu.c
@@ -6,6 +6,7 @@
#include <linux/version.h>
#include <linux/scatterlist.h>
#include <linux/bio.h>
+#include <linux/swiotlb.h>
#include <linux/io.h>
#include <linux/bug.h>
@@ -43,19 +44,27 @@
unsigned long *bitmap;
};
+static int max_dma_bits = 32;
+
void xen_swiotlb_fixup(void *buf, size_t size, unsigned long nslabs)
{
- unsigned order = get_order(size);
+ int i, rc;
+ int dma_bits;
- printk(KERN_DEBUG "xen_swiotlb_fixup: buf=%p size=%zu order=%u\n",
- buf, size, order);
+ printk(KERN_DEBUG "xen_swiotlb_fixup: buf=%p size=%zu\n",
+ buf, size);
- if (WARN_ON(size != (PAGE_SIZE << order)))
- return;
-
- if (xen_create_contiguous_region((unsigned long)buf,
- order, 0xffffffff))
- printk(KERN_ERR "xen_create_contiguous_region failed\n");
+ dma_bits = get_order(IO_TLB_SEGSIZE << IO_TLB_SHIFT) + PAGE_SHIFT;
+ for (i = 0; i < nslabs; i += IO_TLB_SEGSIZE) {
+ do {
+ rc = xen_create_contiguous_region(
+ (unsigned long)buf + (i << IO_TLB_SHIFT),
+ get_order(IO_TLB_SEGSIZE << IO_TLB_SHIFT),
+ dma_bits);
+ } while (rc && dma_bits++ < max_dma_bits);
+ if (rc)
+ panic(KERN_ERR "xen_create_contiguous_region failed\n");
+ }
}
static inline int address_needs_mapping(struct device *hwdev,
@@ -117,7 +126,8 @@
if (check_pages_physically_contiguous(pfn, offset, size))
return 0;
- printk("range_straddles_page_boundary: p=%Lx size=%d pfn=%lx\n",
+ printk(KERN_WARNING "range_straddles_page_boundary: "
+ "p=%Lx size=%zd pfn=%lx\n",
p, size, pfn);
return 1;
}
next prev parent reply other threads:[~2008-11-17 11:52 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-13 19:09 [PATCH 00 of 38] xen: add more Xen dom0 support Jeremy Fitzhardinge
2008-11-13 19:09 ` [PATCH 01 of 38] xen: various whitespace and other formatting cleanups Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 02 of 38] x86: remove unused iommu_nr_pages Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 03 of 38] swiotlb: allow architectures to override swiotlb pool allocation Jeremy Fitzhardinge
2008-11-14 9:01 ` [Xen-devel] [PATCH 03 of 38] swiotlb: allow architectures tooverride " Jan Beulich
2008-11-14 19:33 ` Jeremy Fitzhardinge
2008-11-17 8:04 ` Chris Lalancette
2008-11-17 8:44 ` Keir Fraser
2008-11-17 9:15 ` [Xen-devel] [PATCH 03 of 38] swiotlb: allow architectures tooverrideswiotlb " Jan Beulich
2008-11-13 19:10 ` [PATCH 04 of 38] swiotlb: move some definitions to header Jeremy Fitzhardinge
2008-11-17 3:48 ` FUJITA Tomonori
2008-11-17 11:52 ` Ian Campbell [this message]
2008-11-13 19:10 ` [PATCH 05 of 38] swiotlb: allow architectures to override virt<->bus<->virt conversions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 06 of 38] xen: clean up asm-x86/xen/hypervisor.h Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 07 of 38] x86: add io_apic_ops Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 08 of 38] x86: make apic_* operations inline functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 09 of 38] x86: make sure we really have an hpet mapping before using it Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 10 of 38] x86: add handle_irq() to allow interrupt injection Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 11 of 38] x86: define no-op exit_idle() on 32-bit Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 12 of 38] xen/dom0: handle acpi lapic parsing in Xen dom0 Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 13 of 38] x86: unstatic mp_find_ioapic so it can be used elsewhere Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 14 of 38] x86: add mp_find_ioapic_pin Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 15 of 38] x86: unstatic ioapic entry funcs Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 16 of 38] x86: include linux/init.h in asm/numa_64.h Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 17 of 38] x86: add swiotlb allocation functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 18 of 38] x86: unify pci iommu setup and allow swiotlb to compile for 32 bit Jeremy Fitzhardinge
2008-11-17 3:48 ` FUJITA Tomonori
2008-11-17 16:16 ` Ian Campbell
2008-11-19 2:19 ` FUJITA Tomonori
2008-11-19 13:48 ` Ian Campbell
2008-11-21 14:21 ` Ian Campbell
2008-11-22 1:49 ` FUJITA Tomonori
2008-11-24 11:41 ` Ian Campbell
2008-11-26 2:53 ` FUJITA Tomonori
2008-11-26 9:36 ` Ian Campbell
2008-11-27 3:43 ` FUJITA Tomonori
2008-11-27 17:14 ` Ian Campbell
2008-11-28 6:28 ` FUJITA Tomonori
2008-11-13 19:10 ` [PATCH 19 of 38] x86: add arch specific version of the swiotlb virt<->bus<->virt functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 20 of 38] xen dom0: Make hvc_xen console work for dom0 Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 21 of 38] xen dom0: Initialize xenbus " Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 22 of 38] xen dom0: Set up basic IO permissions " Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 23 of 38] xen-dom0: only selectively disable cpu features Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 24 of 38] xen dom0: Add support for the platform_ops hypercall Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 25 of 38] xen mtrr: Add mtrr_ops support for Xen mtrr Jeremy Fitzhardinge
2008-11-13 20:28 ` Mark McLoughlin
2008-11-14 0:35 ` Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 26 of 38] xen: forcibly disable PAT support Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 27 of 38] xen/dom0: use _PAGE_IOMAP in ioremap to do machine mappings Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 28 of 38] paravirt/xen: add pvop for page_is_ram Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 29 of 38] xen: create dummy ioapic mapping Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 30 of 38] xen: implement io_apic_ops Jeremy Fitzhardinge
2008-11-20 8:33 ` Simon Horman
2008-11-20 17:07 ` Jeremy Fitzhardinge
2008-11-20 9:35 ` Ingo Molnar
2008-11-20 17:00 ` Jeremy Fitzhardinge
2008-11-20 19:22 ` Ingo Molnar
2008-11-20 19:29 ` Yinghai Lu
2008-11-20 19:39 ` Jeremy Fitzhardinge
2008-11-20 19:40 ` Yinghai Lu
2008-11-20 19:38 ` Jeremy Fitzhardinge
2008-11-21 1:30 ` H. Peter Anvin
2008-11-20 20:22 ` Eric W. Biederman
2008-11-20 21:32 ` Jeremy Fitzhardinge
2008-11-21 0:58 ` Eric W. Biederman
2008-11-21 1:16 ` Jeremy Fitzhardinge
2008-11-21 4:27 ` Eric W. Biederman
2008-11-24 19:18 ` Jeremy Fitzhardinge
2008-11-24 22:02 ` Eric W. Biederman
2008-11-13 19:10 ` [PATCH 31 of 38] xen: set irq_chip disable Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 32 of 38] xen: use our own eventchannel->irq path Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 33 of 38] xen: pack all irq-related info together Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 34 of 38] xen: remove irq bindcount Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 35 of 38] xen: implement pirq type event channels Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 36 of 38] xen: route hardware irqs via Xen Jeremy Fitzhardinge
2008-11-20 9:31 ` Ingo Molnar
2008-11-20 17:06 ` Jeremy Fitzhardinge
2008-11-21 7:17 ` Simon Horman
2008-11-13 19:10 ` [PATCH 37 of 38] xen: bind pirq to vector and event channel Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 38 of 38] xen: make sure that softirqs get handled at the end of event processing Jeremy Fitzhardinge
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=1226922748.18916.28.camel@zakaz.uk.xensource.com \
--to=ian.campbell@citrix.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.com \
/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
all inboxes | Powered by JetHome®