5 messages in com.xensource.lists.xen-develRe: [Xen-devel] [PATCH] Retry 3: Use ...
FromSent OnAttachments
Langsdorf, Mark26 Feb 2007 12:36.patch
Jan Beulich27 Feb 2007 00:34 
Langsdorf, Mark27 Feb 2007 12:30 
Keir Fraser27 Feb 2007 12:49 
Keir Fraser27 Feb 2007 13:20 
Subject:Re: [Xen-devel] [PATCH] Retry 3: Use i386 swiotlb code in lib/swiotlb-xen.c [2/2]
From:Jan Beulich (jbeu@novell.com)
Date:02/27/2007 12:34:36 AM
List:com.xensource.lists.xen-devel

"Langsdorf, Mark" <mark@amd.com> 26.02.07 21:37 >>>

Move the arch/i386/kernel/swiotlb.c code to lib/swiotlb-xen.c code in order to simplify maintenance of Xen in the future.

The first patch simply moves the code to lib/swiotlb-xen.c;

Without the lib/Makefile adjustment the first patch can't work without the second one.

the second patch adds the necessary changes to the Xen code base to allow x86_64 systems to boot with SWIOTLB and the dma_ops framework.

--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/pci-dma-xen.c Mon Feb 26 15:52:16
2007 -0600 +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/pci-dma-xen.c Mon Feb 26 15:58:43
2007 -0600 ... +#include <xen/balloon.h> +#include <asm/tlbflush.h>

Why xen/balloon.h? asm/hypervisor.h is what declares xen_{create,destroy}_contiguous_region().

... + /* Hardcode 31 address bits for now: aacraid limitation. */ + if (xen_create_contiguous_region((unsigned long)memory, get_order(size),
fls64(dma_mask)) != 0) { + free_pages((unsigned long)memory, get_order(size)); + return NULL; + } +

Could we also get rid of the (now wrong) comment?

--- a/linux-2.6-xen-sparse/lib/swiotlb-xen.c Mon Feb 26 15:52:16 2007 -0600 +++ b/linux-2.6-xen-sparse/lib/swiotlb-xen.c Mon Feb 26 15:58:43 2007 -0600 ... +void +swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, + dma_addr_t dma_handle) +{ + if (in_swiotlb_aperture((dma_addr_t) vaddr)) + free_pages((unsigned long) vaddr, get_order(size)); + else + /* DMA_TO_DEVICE to avoid memcpy in unmap_single */ + swiotlb_unmap_single (hwdev, dma_handle, size, DMA_TO_DEVICE); +}

I'm pretty certain this is wrong: dma_handle is what should be passed to in_swiotlb_aperture().

The first patch also copies the standard arch/x86_64/kernel/pci-dma.c to arch/x86_64/kernel/pci-dma-xen.c, which should make reviewing the second patch a little easier.

While the second patch assumes the first patch does what you describe, the first patch really just moves swiotlb.c.

Jan