* [PATCH 0/20] dma_ops for i386
@ 2008-03-25 21:36 Glauber Costa
2008-03-25 21:36 ` [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h Glauber Costa
` (3 more replies)
0 siblings, 4 replies; 31+ messages in thread
From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw)
To: linux-kernel; +Cc: kvm-devel, avi, akpm
Hello,
Here there is a series of 20 patches that lays the foundations for
using dma_ops in i386 in the very same way x86_64, as well as many other
architectures already do.
The functions themselves for i386 are placed in a pci-base_32.c, but just
a few among them are actually implemented. Most were no-ops anyway.
Also, as I said, this is by no means a complete coverage of dma_ops.
there are still some call sites to be patches in pci-dma_32.c (although I don't
really plan to change them, but to integrate them in a single pci-dma.c).
I intend to have it done progressively.
The granularity is per-operation, meaning each patch moves one specific function
to the common header. This is compiled-tested in both i386 and x86_64 in
~5 randconfigs each, and boot-tested in my hardware with my default configs
The motivation for that is the ongoing work for pci-passthrough in KVM.
So ingo, avi, what do you think it's the best way to handle these patches through?
Thanks
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
^ permalink raw reply [flat|nested] 31+ messages in thread* [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h 2008-03-25 21:36 [PATCH 0/20] dma_ops for i386 Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 02/20] x86: implement dma_map_single through dma_ops Glauber Costa 2008-03-26 7:06 ` [PATCH 0/20] dma_ops for i386 Ingo Molnar ` (2 subsequent siblings) 3 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm take it off the x86_64 specific header Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 54 ++++++++++++++++++++++++++++++++++++++ include/asm-x86/dma-mapping_64.h | 49 ---------------------------------- 2 files changed, 54 insertions(+), 49 deletions(-) diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 58f790f..aebd178 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -1,5 +1,59 @@ +#ifndef _ASM_DMA_MAPPING_H_ +#define _ASM_DMA_MAPPING_H_ + +/* + * IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for + * documentation. + */ + +#include <linux/scatterlist.h> +#include <asm/io.h> +#include <asm/swiotlb.h> + +struct dma_mapping_ops { + int (*mapping_error)(dma_addr_t dma_addr); + void* (*alloc_coherent)(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp); + void (*free_coherent)(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle); + dma_addr_t (*map_single)(struct device *hwdev, void *ptr, + size_t size, int direction); + /* like map_single, but doesn't check the device mask */ + dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, + size_t size, int direction); + void (*unmap_single)(struct device *dev, dma_addr_t addr, + size_t size, int direction); + void (*sync_single_for_cpu)(struct device *hwdev, + dma_addr_t dma_handle, size_t size, + int direction); + void (*sync_single_for_device)(struct device *hwdev, + dma_addr_t dma_handle, size_t size, + int direction); + void (*sync_single_range_for_cpu)(struct device *hwdev, + dma_addr_t dma_handle, unsigned long offset, + size_t size, int direction); + void (*sync_single_range_for_device)(struct device *hwdev, + dma_addr_t dma_handle, unsigned long offset, + size_t size, int direction); + void (*sync_sg_for_cpu)(struct device *hwdev, + struct scatterlist *sg, int nelems, + int direction); + void (*sync_sg_for_device)(struct device *hwdev, + struct scatterlist *sg, int nelems, + int direction); + int (*map_sg)(struct device *hwdev, struct scatterlist *sg, + int nents, int direction); + void (*unmap_sg)(struct device *hwdev, + struct scatterlist *sg, int nents, + int direction); + int (*dma_supported)(struct device *hwdev, u64 mask); + int is_phys; +}; + #ifdef CONFIG_X86_32 # include "dma-mapping_32.h" #else # include "dma-mapping_64.h" #endif + +#endif diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index ecd0f61..369188a 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -1,55 +1,6 @@ #ifndef _X8664_DMA_MAPPING_H #define _X8664_DMA_MAPPING_H 1 -/* - * IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for - * documentation. - */ - -#include <linux/scatterlist.h> -#include <asm/io.h> -#include <asm/swiotlb.h> - -struct dma_mapping_ops { - int (*mapping_error)(dma_addr_t dma_addr); - void* (*alloc_coherent)(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp); - void (*free_coherent)(struct device *dev, size_t size, - void *vaddr, dma_addr_t dma_handle); - dma_addr_t (*map_single)(struct device *hwdev, void *ptr, - size_t size, int direction); - /* like map_single, but doesn't check the device mask */ - dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, - size_t size, int direction); - void (*unmap_single)(struct device *dev, dma_addr_t addr, - size_t size, int direction); - void (*sync_single_for_cpu)(struct device *hwdev, - dma_addr_t dma_handle, size_t size, - int direction); - void (*sync_single_for_device)(struct device *hwdev, - dma_addr_t dma_handle, size_t size, - int direction); - void (*sync_single_range_for_cpu)(struct device *hwdev, - dma_addr_t dma_handle, unsigned long offset, - size_t size, int direction); - void (*sync_single_range_for_device)(struct device *hwdev, - dma_addr_t dma_handle, unsigned long offset, - size_t size, int direction); - void (*sync_sg_for_cpu)(struct device *hwdev, - struct scatterlist *sg, int nelems, - int direction); - void (*sync_sg_for_device)(struct device *hwdev, - struct scatterlist *sg, int nelems, - int direction); - int (*map_sg)(struct device *hwdev, struct scatterlist *sg, - int nents, int direction); - void (*unmap_sg)(struct device *hwdev, - struct scatterlist *sg, int nents, - int direction); - int (*dma_supported)(struct device *hwdev, u64 mask); - int is_phys; -}; - extern dma_addr_t bad_dma_address; extern const struct dma_mapping_ops* dma_ops; extern int iommu_merge; -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 02/20] x86: implement dma_map_single through dma_ops 2008-03-25 21:36 ` [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 03/20] x86: move dma_unmap_single to common header Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm That's already the name of the game for x86_64. For i386, we add a pci-base_32.c, that will hold the default operations. The function call itself goes through dma-mapping.h , the common header Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/Makefile | 1 + arch/x86/kernel/pci-base_32.c | 20 ++++++++++++++++++++ include/asm-x86/dma-mapping.h | 10 ++++++++++ include/asm-x86/dma-mapping_32.h | 10 ---------- include/asm-x86/dma-mapping_64.h | 9 --------- 5 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 arch/x86/kernel/pci-base_32.c diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 340221f..95fbf57 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -27,6 +27,7 @@ obj-y += pci-dma_$(BITS).o bootflag.o e820_$(BITS).o obj-y += quirks.o i8237.o topology.o kdebugfs.o obj-y += alternative.o i8253.o obj-$(CONFIG_X86_64) += pci-nommu_64.o bugs_64.o +obj-$(CONFIG_X86_32) += pci-base_32.o obj-y += tsc_$(BITS).o io_delay.o rtc.o obj-y += process.o diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c new file mode 100644 index 0000000..b613d73 --- /dev/null +++ b/arch/x86/kernel/pci-base_32.c @@ -0,0 +1,20 @@ +#include <linux/mm.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/dma-mapping.h> +#include <asm/dma-mapping.h> + +static dma_addr_t pci32_map_single(struct device *dev, void *ptr, + size_t size, int direction) +{ + WARN_ON(size == 0); + flush_write_buffers(); + return virt_to_phys(ptr); +} + +static const struct dma_mapping_ops pci32_dma_ops = { + .map_single = pci32_map_single, +}; + +const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; +EXPORT_SYMBOL(dma_ops); diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index aebd178..d320244 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -50,10 +50,20 @@ struct dma_mapping_ops { int is_phys; }; +extern const struct dma_mapping_ops *dma_ops; + #ifdef CONFIG_X86_32 # include "dma-mapping_32.h" #else # include "dma-mapping_64.h" #endif +static inline dma_addr_t +dma_map_single(struct device *hwdev, void *ptr, size_t size, + int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + return dma_ops->map_single(hwdev, ptr, size, direction); +} + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index 55f01bd..b496306 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -17,16 +17,6 @@ void *dma_alloc_coherent(struct device *dev, size_t size, void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); -static inline dma_addr_t -dma_map_single(struct device *dev, void *ptr, size_t size, - enum dma_data_direction direction) -{ - BUG_ON(!valid_dma_direction(direction)); - WARN_ON(size == 0); - flush_write_buffers(); - return virt_to_phys(ptr); -} - static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 369188a..969a7da 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -2,7 +2,6 @@ #define _X8664_DMA_MAPPING_H 1 extern dma_addr_t bad_dma_address; -extern const struct dma_mapping_ops* dma_ops; extern int iommu_merge; static inline int dma_mapping_error(dma_addr_t dma_addr) @@ -24,14 +23,6 @@ extern void *dma_alloc_coherent(struct device *dev, size_t size, extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); -static inline dma_addr_t -dma_map_single(struct device *hwdev, void *ptr, size_t size, - int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - return dma_ops->map_single(hwdev, ptr, size, direction); -} - static inline void dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size, int direction) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 03/20] x86: move dma_unmap_single to common header 2008-03-25 21:36 ` [PATCH 02/20] x86: implement dma_map_single through dma_ops Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 04/20] x86: move dma_map_sg " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 base does not need it, so it gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 10 ++++++++++ include/asm-x86/dma-mapping_32.h | 7 ------- include/asm-x86/dma-mapping_64.h | 8 -------- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index b613d73..a8a7c7f 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -14,6 +14,7 @@ static dma_addr_t pci32_map_single(struct device *dev, void *ptr, static const struct dma_mapping_ops pci32_dma_ops = { .map_single = pci32_map_single, + .unmap_single = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index d320244..bb0378f 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -66,4 +66,14 @@ dma_map_single(struct device *hwdev, void *ptr, size_t size, return dma_ops->map_single(hwdev, ptr, size, direction); } +static inline void +dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size, + int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->unmap_single) + dma_ops->unmap_single(dev, addr, size, direction); +} + + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index b496306..0b27cb0 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -17,13 +17,6 @@ void *dma_alloc_coherent(struct device *dev, size_t size, void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); -static inline void -dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, - enum dma_data_direction direction) -{ - BUG_ON(!valid_dma_direction(direction)); -} - static inline int dma_map_sg(struct device *dev, struct scatterlist *sglist, int nents, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 969a7da..5d349db 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -23,14 +23,6 @@ extern void *dma_alloc_coherent(struct device *dev, size_t size, extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); -static inline void -dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size, - int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - dma_ops->unmap_single(dev, addr, size, direction); -} - #define dma_map_page(dev,page,offset,size,dir) \ dma_map_single((dev), page_address(page)+(offset), (size), (dir)) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 04/20] x86: move dma_map_sg to common header 2008-03-25 21:36 ` [PATCH 03/20] x86: move dma_unmap_single to common header Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 05/20] x86: move dma_unmap_sg " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm the old i386 implementation is moved to pci-base_32.c Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 19 +++++++++++++++++++ include/asm-x86/dma-mapping.h | 8 +++++++- include/asm-x86/dma-mapping_32.h | 20 -------------------- include/asm-x86/dma-mapping_64.h | 7 ------- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index a8a7c7f..2474152 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -12,9 +12,28 @@ static dma_addr_t pci32_map_single(struct device *dev, void *ptr, return virt_to_phys(ptr); } +static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, + int nents, int direction) +{ + struct scatterlist *sg; + int i; + + WARN_ON(nents == 0 || sglist[0].length == 0); + + for_each_sg(sglist, sg, nents, i) { + BUG_ON(!sg_page(sg)); + + sg->dma_address = sg_phys(sg); + } + + flush_write_buffers(); + return nents; +} + static const struct dma_mapping_ops pci32_dma_ops = { .map_single = pci32_map_single, .unmap_single = NULL, + .map_sg = pci32_dma_map_sg, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index bb0378f..0901154 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -75,5 +75,11 @@ dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size, dma_ops->unmap_single(dev, addr, size, direction); } - +static inline int +dma_map_sg(struct device *hwdev, struct scatterlist *sg, + int nents, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + return dma_ops->map_sg(hwdev, sg, nents, direction); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index 0b27cb0..cdcdeff 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -17,26 +17,6 @@ void *dma_alloc_coherent(struct device *dev, size_t size, void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); -static inline int -dma_map_sg(struct device *dev, struct scatterlist *sglist, int nents, - enum dma_data_direction direction) -{ - struct scatterlist *sg; - int i; - - BUG_ON(!valid_dma_direction(direction)); - WARN_ON(nents == 0 || sglist[0].length == 0); - - for_each_sg(sglist, sg, nents, i) { - BUG_ON(!sg_page(sg)); - - sg->dma_address = sg_phys(sg); - } - - flush_write_buffers(); - return nents; -} - static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 5d349db..b27527a 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -96,13 +96,6 @@ dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, flush_write_buffers(); } -static inline int -dma_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - return dma_ops->map_sg(hwdev, sg, nents, direction); -} - static inline void dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 05/20] x86: move dma_unmap_sg to common header 2008-03-25 21:36 ` [PATCH 04/20] x86: move dma_map_sg " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 06/20] x86: move dma_sync_single_for_cpu " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 9 +++++++++ include/asm-x86/dma-mapping_32.h | 8 -------- include/asm-x86/dma-mapping_64.h | 8 -------- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index 2474152..9205304 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -34,6 +34,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .map_single = pci32_map_single, .unmap_single = NULL, .map_sg = pci32_dma_map_sg, + .unmap_sg = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 0901154..6e7747a 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -82,4 +82,13 @@ dma_map_sg(struct device *hwdev, struct scatterlist *sg, BUG_ON(!valid_dma_direction(direction)); return dma_ops->map_sg(hwdev, sg, nents, direction); } + +static inline void +dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, + int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->unmap_sg) + dma_ops->unmap_sg(hwdev, sg, nents, direction); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index cdcdeff..55445e3 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -32,14 +32,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, BUG_ON(!valid_dma_direction(direction)); } - -static inline void -dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, - enum dma_data_direction direction) -{ - BUG_ON(!valid_dma_direction(direction)); -} - static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index b27527a..ce37efb 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -96,14 +96,6 @@ dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, flush_write_buffers(); } -static inline void -dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, - int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - dma_ops->unmap_sg(hwdev, sg, nents, direction); -} - extern int dma_supported(struct device *hwdev, u64 mask); /* same for gart, swiotlb, and nommu */ -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 06/20] x86: move dma_sync_single_for_cpu to common header 2008-03-25 21:36 ` [PATCH 05/20] x86: move dma_unmap_sg " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 07/20] x86: move dma_sync_single_for_device " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 12 ++++++++++++ include/asm-x86/dma-mapping_32.h | 6 ------ include/asm-x86/dma-mapping_64.h | 11 ----------- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index 9205304..dce03c8 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -35,6 +35,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .unmap_single = NULL, .map_sg = pci32_dma_map_sg, .unmap_sg = NULL, + .sync_single_for_cpu = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 6e7747a..507069d 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -91,4 +91,16 @@ dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, if (dma_ops->unmap_sg) dma_ops->unmap_sg(hwdev, sg, nents, direction); } + +static inline void +dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_single_for_cpu) + dma_ops->sync_single_for_cpu(hwdev, dma_handle, size, + direction); + flush_write_buffers(); +} + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index 55445e3..a05b2fc 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -33,12 +33,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, } static inline void -dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, - enum dma_data_direction direction) -{ -} - -static inline void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction) { diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index ce37efb..b055964 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -29,17 +29,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, #define dma_unmap_page dma_unmap_single static inline void -dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, - size_t size, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_single_for_cpu) - dma_ops->sync_single_for_cpu(hwdev, dma_handle, size, - direction); - flush_write_buffers(); -} - -static inline void dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, size_t size, int direction) { -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 07/20] x86: move dma_sync_single_for_device to common header 2008-03-25 21:36 ` [PATCH 06/20] x86: move dma_sync_single_for_cpu " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 08/20] x86: move dma_sync_single_range_for_cpu " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 11 +++++++++++ include/asm-x86/dma-mapping_32.h | 7 ------- include/asm-x86/dma-mapping_64.h | 11 ----------- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index dce03c8..3648824 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -36,6 +36,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .map_sg = pci32_dma_map_sg, .unmap_sg = NULL, .sync_single_for_cpu = NULL, + .sync_single_for_device = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 507069d..8ad582c 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -103,4 +103,15 @@ dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, flush_write_buffers(); } +static inline void +dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_single_for_device) + dma_ops->sync_single_for_device(hwdev, dma_handle, size, + direction); + flush_write_buffers(); +} + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index a05b2fc..b91771a 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -33,13 +33,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, } static inline void -dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, - enum dma_data_direction direction) -{ - flush_write_buffers(); -} - -static inline void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index b055964..b539f61 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -29,17 +29,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, #define dma_unmap_page dma_unmap_single static inline void -dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, - size_t size, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_single_for_device) - dma_ops->sync_single_for_device(hwdev, dma_handle, size, - direction); - flush_write_buffers(); -} - -static inline void dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction) { -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 08/20] x86: move dma_sync_single_range_for_cpu to common header 2008-03-25 21:36 ` [PATCH 07/20] x86: move dma_sync_single_for_device " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 09/20] x86: move dma_sync_single_range_for_device " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 11 +++++++++++ include/asm-x86/dma-mapping_32.h | 7 ------- include/asm-x86/dma-mapping_64.h | 12 ------------ 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index 3648824..c501599 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -37,6 +37,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .unmap_sg = NULL, .sync_single_for_cpu = NULL, .sync_single_for_device = NULL, + .sync_single_range_for_cpu = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 8ad582c..a466470 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -114,4 +114,15 @@ dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, flush_write_buffers(); } +static inline void +dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, + unsigned long offset, size_t size, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_single_range_for_cpu) + dma_ops->sync_single_range_for_cpu(hwdev, dma_handle, offset, + size, direction); + + flush_write_buffers(); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index b91771a..e24c59d 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -33,13 +33,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, } static inline void -dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle, - unsigned long offset, size_t size, - enum dma_data_direction direction) -{ -} - -static inline void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index b539f61..6ecafad 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -29,18 +29,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, #define dma_unmap_page dma_unmap_single static inline void -dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, - unsigned long offset, size_t size, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_single_range_for_cpu) { - dma_ops->sync_single_range_for_cpu(hwdev, dma_handle, offset, size, direction); - } - - flush_write_buffers(); -} - -static inline void dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction) { -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 09/20] x86: move dma_sync_single_range_for_device to common header 2008-03-25 21:36 ` [PATCH 08/20] x86: move dma_sync_single_range_for_cpu " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 10/20] x86: move dma_sync_sg_for_cpu " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 14 ++++++++++++++ include/asm-x86/dma-mapping_32.h | 8 -------- include/asm-x86/dma-mapping_64.h | 12 ------------ 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index c501599..4512c30 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -38,6 +38,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .sync_single_for_cpu = NULL, .sync_single_for_device = NULL, .sync_single_range_for_cpu = NULL, + .sync_single_range_for_device = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index a466470..260538b 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -125,4 +125,18 @@ dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, flush_write_buffers(); } + +static inline void +dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, + unsigned long offset, size_t size, + int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_single_range_for_device) + dma_ops->sync_single_range_for_device(hwdev, dma_handle, + offset, size, direction); + + flush_write_buffers(); +} + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index e24c59d..60d5371 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -33,14 +33,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, } static inline void -dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, - unsigned long offset, size_t size, - enum dma_data_direction direction) -{ - flush_write_buffers(); -} - -static inline void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction direction) { diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 6ecafad..dfa66cc 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -29,18 +29,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, #define dma_unmap_page dma_unmap_single static inline void -dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, - unsigned long offset, size_t size, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_single_range_for_device) - dma_ops->sync_single_range_for_device(hwdev, dma_handle, - offset, size, direction); - - flush_write_buffers(); -} - -static inline void dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, int nelems, int direction) { -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 10/20] x86: move dma_sync_sg_for_cpu to common header 2008-03-25 21:36 ` [PATCH 09/20] x86: move dma_sync_single_range_for_device " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 11/20] x86: move dma_sync_sg_for_device " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 9 +++++++++ include/asm-x86/dma-mapping_32.h | 6 ------ include/asm-x86/dma-mapping_64.h | 11 ----------- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index 4512c30..d876600 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -39,6 +39,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .sync_single_for_device = NULL, .sync_single_range_for_cpu = NULL, .sync_single_range_for_device = NULL, + .sync_sg_for_cpu = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 260538b..1a301d7 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -139,4 +139,13 @@ dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, flush_write_buffers(); } +static inline void +dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, + int nelems, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_sg_for_cpu) + dma_ops->sync_sg_for_cpu(hwdev, sg, nelems, direction); + flush_write_buffers(); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index 60d5371..e7c82e3 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -33,12 +33,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, } static inline void -dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, - enum dma_data_direction direction) -{ -} - -static inline void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction direction) { diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index dfa66cc..804b154 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -27,17 +27,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_map_single((dev), page_address(page)+(offset), (size), (dir)) #define dma_unmap_page dma_unmap_single - -static inline void -dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, - int nelems, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_sg_for_cpu) - dma_ops->sync_sg_for_cpu(hwdev, sg, nelems, direction); - flush_write_buffers(); -} - static inline void dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, int nelems, int direction) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 11/20] x86: move dma_sync_sg_for_device to common header 2008-03-25 21:36 ` [PATCH 10/20] x86: move dma_sync_sg_for_cpu " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 12/20] x86: move alloc and free coherent " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm i386 gets an empty function Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 1 + include/asm-x86/dma-mapping.h | 11 +++++++++++ include/asm-x86/dma-mapping_32.h | 7 ------- include/asm-x86/dma-mapping_64.h | 12 ------------ 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index d876600..033d94e 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -40,6 +40,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .sync_single_range_for_cpu = NULL, .sync_single_range_for_device = NULL, .sync_sg_for_cpu = NULL, + .sync_sg_for_device = NULL, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 1a301d7..53a404b 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -148,4 +148,15 @@ dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, dma_ops->sync_sg_for_cpu(hwdev, sg, nelems, direction); flush_write_buffers(); } + +static inline void +dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, + int nelems, int direction) +{ + BUG_ON(!valid_dma_direction(direction)); + if (dma_ops->sync_sg_for_device) + dma_ops->sync_sg_for_device(hwdev, sg, nelems, direction); + + flush_write_buffers(); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index e7c82e3..eff42f4 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -32,13 +32,6 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, BUG_ON(!valid_dma_direction(direction)); } -static inline void -dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, - enum dma_data_direction direction) -{ - flush_write_buffers(); -} - static inline int dma_mapping_error(dma_addr_t dma_addr) { diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 804b154..707dbbe 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -27,18 +27,6 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_map_single((dev), page_address(page)+(offset), (size), (dir)) #define dma_unmap_page dma_unmap_single -static inline void -dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, - int nelems, int direction) -{ - BUG_ON(!valid_dma_direction(direction)); - if (dma_ops->sync_sg_for_device) { - dma_ops->sync_sg_for_device(hwdev, sg, nelems, direction); - } - - flush_write_buffers(); -} - extern int dma_supported(struct device *hwdev, u64 mask); /* same for gart, swiotlb, and nommu */ -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 12/20] x86: move alloc and free coherent to common header 2008-03-25 21:36 ` [PATCH 11/20] x86: move dma_sync_sg_for_device " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 13/20] x86: move dma_map_page and dma_unmap_page " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm they are the same between architectures (except for the fact that x86_64 has duplicate code) move them to dma-mapping.h Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 10 ++++++++++ include/asm-x86/dma-mapping_32.h | 9 --------- include/asm-x86/dma-mapping_64.h | 11 ----------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 53a404b..3ea3802 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -52,6 +52,16 @@ struct dma_mapping_ops { extern const struct dma_mapping_ops *dma_ops; +#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) +#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) + +void *dma_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t flag); + +void dma_free_coherent(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle); + + #ifdef CONFIG_X86_32 # include "dma-mapping_32.h" #else diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index eff42f4..d8f6420 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -8,15 +8,6 @@ #include <asm/io.h> #include <asm/bug.h> -#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) -#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) - -void *dma_alloc_coherent(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t flag); - -void dma_free_coherent(struct device *dev, size_t size, - void *vaddr, dma_addr_t dma_handle); - static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction direction) diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 707dbbe..ce881d9 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -12,17 +12,6 @@ static inline int dma_mapping_error(dma_addr_t dma_addr) return (dma_addr == bad_dma_address); } -#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) -#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) - -#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) -#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) - -extern void *dma_alloc_coherent(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp); -extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, - dma_addr_t dma_handle); - #define dma_map_page(dev,page,offset,size,dir) \ dma_map_single((dev), page_address(page)+(offset), (size), (dir)) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 13/20] x86: move dma_map_page and dma_unmap_page to common header 2008-03-25 21:36 ` [PATCH 12/20] x86: move alloc and free coherent " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 14/20] x86: move dma_cache_sync " Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm They are similar enough to do this move. the macro version is ugly, and we use inline functions instead Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 14 ++++++++++++++ include/asm-x86/dma-mapping_32.h | 15 --------------- include/asm-x86/dma-mapping_64.h | 4 ---- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 3ea3802..b5a413a 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -169,4 +169,18 @@ dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, flush_write_buffers(); } + +static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, + size_t offset, size_t size, + int direction) +{ + return dma_map_single(dev, page_address(page)+offset, size, direction); +} + +static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, + size_t size, int direction) +{ + dma_unmap_single(dev, addr, size, direction); +} + #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index d8f6420..c61ae7f 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -8,21 +8,6 @@ #include <asm/io.h> #include <asm/bug.h> -static inline dma_addr_t -dma_map_page(struct device *dev, struct page *page, unsigned long offset, - size_t size, enum dma_data_direction direction) -{ - BUG_ON(!valid_dma_direction(direction)); - return page_to_phys(page) + offset; -} - -static inline void -dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, - enum dma_data_direction direction) -{ - BUG_ON(!valid_dma_direction(direction)); -} - static inline int dma_mapping_error(dma_addr_t dma_addr) { diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index ce881d9..2b4a430 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -12,10 +12,6 @@ static inline int dma_mapping_error(dma_addr_t dma_addr) return (dma_addr == bad_dma_address); } -#define dma_map_page(dev,page,offset,size,dir) \ - dma_map_single((dev), page_address(page)+(offset), (size), (dir)) - -#define dma_unmap_page dma_unmap_single extern int dma_supported(struct device *hwdev, u64 mask); /* same for gart, swiotlb, and nommu */ -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 14/20] x86: move dma_cache_sync to common header 2008-03-25 21:36 ` [PATCH 13/20] x86: move dma_map_page and dma_unmap_page " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm they are the same in both architectures. Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 6 ++++++ include/asm-x86/dma-mapping_32.h | 7 ------- include/asm-x86/dma-mapping_64.h | 7 ------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index b5a413a..70a5ede 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -183,4 +183,10 @@ static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, dma_unmap_single(dev, addr, size, direction); } +static inline void +dma_cache_sync(struct device *dev, void *vaddr, size_t size, + enum dma_data_direction dir) +{ + flush_write_buffers(); +} #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index c61ae7f..e60c30a 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -55,13 +55,6 @@ dma_get_cache_alignment(void) #define dma_is_consistent(d, h) (1) -static inline void -dma_cache_sync(struct device *dev, void *vaddr, size_t size, - enum dma_data_direction direction) -{ - flush_write_buffers(); -} - #define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY extern int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 2b4a430..b1bc6ca 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -24,13 +24,6 @@ static inline int dma_get_cache_alignment(void) extern int dma_set_mask(struct device *dev, u64 mask); -static inline void -dma_cache_sync(struct device *dev, void *vaddr, size_t size, - enum dma_data_direction dir) -{ - flush_write_buffers(); -} - extern struct device fallback_dev; extern int panic_on_overflow; -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c 2008-03-25 21:36 ` [PATCH 14/20] x86: move dma_cache_sync " Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 16/20] x86: align to clflush size Glauber Costa 2008-03-27 11:03 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Mark McLoughlin 0 siblings, 2 replies; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm This is the way x86_64 does, so this make them equal. They have to be extern now in the header, and the extern definition is moved to the common dma-mapping.h header Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-dma_32.c | 33 +++++++++++++++++++++++++++++++++ include/asm-x86/dma-mapping.h | 3 +++ include/asm-x86/dma-mapping_32.h | 29 ----------------------------- include/asm-x86/dma-mapping_64.h | 4 ---- 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/arch/x86/kernel/pci-dma_32.c b/arch/x86/kernel/pci-dma_32.c index 5133032..453b4bd 100644 --- a/arch/x86/kernel/pci-dma_32.c +++ b/arch/x86/kernel/pci-dma_32.c @@ -156,6 +156,39 @@ EXPORT_SYMBOL(dma_mark_declared_memory_occupied); int forbid_dac; EXPORT_SYMBOL(forbid_dac); +int +dma_supported(struct device *dev, u64 mask) +{ + /* + * we fall back to GFP_DMA when the mask isn't all 1s, + * so we can't guarantee allocations that must be + * within a tighter range than GFP_DMA.. + */ + if (mask < 0x00ffffff) + return 0; + + /* Work around chipset bugs */ + if (forbid_dac > 0 && mask > 0xffffffffULL) + return 0; + + if (dma_ops->dma_supported) + return dma_ops->dma_supported(dev, mask); + + return 1; +} + +int +dma_set_mask(struct device *dev, u64 mask) +{ + if (!dev->dma_mask || !dma_supported(dev, mask)) + return -EIO; + + *dev->dma_mask = mask; + + return 0; +} + + static __devinit void via_no_dac(struct pci_dev *dev) { if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI && forbid_dac == 0) { diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 70a5ede..06eb448 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -62,6 +62,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); +extern int dma_supported(struct device *hwdev, u64 mask); +extern int dma_set_mask(struct device *dev, u64 mask); + #ifdef CONFIG_X86_32 # include "dma-mapping_32.h" #else diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index e60c30a..fd7246d 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -17,35 +17,6 @@ dma_mapping_error(dma_addr_t dma_addr) extern int forbid_dac; static inline int -dma_supported(struct device *dev, u64 mask) -{ - /* - * we fall back to GFP_DMA when the mask isn't all 1s, - * so we can't guarantee allocations that must be - * within a tighter range than GFP_DMA.. - */ - if(mask < 0x00ffffff) - return 0; - - /* Work around chipset bugs */ - if (forbid_dac > 0 && mask > 0xffffffffULL) - return 0; - - return 1; -} - -static inline int -dma_set_mask(struct device *dev, u64 mask) -{ - if(!dev->dma_mask || !dma_supported(dev, mask)) - return -EIO; - - *dev->dma_mask = mask; - - return 0; -} - -static inline int dma_get_cache_alignment(void) { /* no easy way to get cache size on all x86, so return the diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index b1bc6ca..9674dac 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -12,8 +12,6 @@ static inline int dma_mapping_error(dma_addr_t dma_addr) return (dma_addr == bad_dma_address); } -extern int dma_supported(struct device *hwdev, u64 mask); - /* same for gart, swiotlb, and nommu */ static inline int dma_get_cache_alignment(void) { @@ -22,8 +20,6 @@ static inline int dma_get_cache_alignment(void) #define dma_is_consistent(d, h) 1 -extern int dma_set_mask(struct device *dev, u64 mask); - extern struct device fallback_dev; extern int panic_on_overflow; -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 16/20] x86: align to clflush size 2008-03-25 21:36 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 17/20] x86: provide a bad_dma_address symbol for i386 Glauber Costa 2008-03-26 7:09 ` [PATCH 16/20] x86: align to clflush size Ingo Molnar 2008-03-27 11:03 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Mark McLoughlin 1 sibling, 2 replies; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm Do it instead of using the conservative approach we're currently doing. This is the way x86_64 does, and this patch makes this piece of code the same between them, ready to be integrated Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping_32.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index fd7246d..d0512c9 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -21,7 +21,7 @@ dma_get_cache_alignment(void) { /* no easy way to get cache size on all x86, so return the * maximum possible, to be safe */ - return (1 << INTERNODE_CACHE_SHIFT); + return boot_cpu_data.x86_clflush_size; } #define dma_is_consistent(d, h) (1) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 17/20] x86: provide a bad_dma_address symbol for i386 2008-03-25 21:36 ` [PATCH 16/20] x86: align to clflush size Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 18/20] x86: unify dma_mapping_error Glauber Costa 2008-03-26 7:09 ` [PATCH 16/20] x86: align to clflush size Ingo Molnar 1 sibling, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm It's initially 0, since we don't expect any DMA there. Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-dma_32.c | 4 ++++ include/asm-x86/dma-mapping.h | 2 ++ include/asm-x86/dma-mapping_64.h | 1 - 3 files changed, 6 insertions(+), 1 deletions(-) diff --git a/arch/x86/kernel/pci-dma_32.c b/arch/x86/kernel/pci-dma_32.c index 453b4bd..55ab3c8 100644 --- a/arch/x86/kernel/pci-dma_32.c +++ b/arch/x86/kernel/pci-dma_32.c @@ -14,6 +14,10 @@ #include <linux/module.h> #include <asm/io.h> +/* For i386, we make it point to the NULL address */ +dma_addr_t bad_dma_address __read_mostly = 0x0; +EXPORT_SYMBOL(bad_dma_address); + struct dma_coherent_mem { void *virt_base; u32 device_base; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 06eb448..908fcaa 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -10,6 +10,8 @@ #include <asm/io.h> #include <asm/swiotlb.h> +extern dma_addr_t bad_dma_address; + struct dma_mapping_ops { int (*mapping_error)(dma_addr_t dma_addr); void* (*alloc_coherent)(struct device *dev, size_t size, diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 9674dac..352bf41 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -1,7 +1,6 @@ #ifndef _X8664_DMA_MAPPING_H #define _X8664_DMA_MAPPING_H 1 -extern dma_addr_t bad_dma_address; extern int iommu_merge; static inline int dma_mapping_error(dma_addr_t dma_addr) -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 18/20] x86: unify dma_mapping_error 2008-03-25 21:36 ` [PATCH 17/20] x86: provide a bad_dma_address symbol for i386 Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 19/20] x86: move ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY to dma-mapping.h Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm We provide a map_error function in pci-base_32.c to make sure i386 keeps with the same behaviour it used to. Signed-off-by: Glauber Costa <gcosta@redhat.com> --- arch/x86/kernel/pci-base_32.c | 7 +++++++ include/asm-x86/dma-mapping.h | 8 ++++++++ include/asm-x86/dma-mapping_32.h | 6 ------ include/asm-x86/dma-mapping_64.h | 8 -------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/arch/x86/kernel/pci-base_32.c b/arch/x86/kernel/pci-base_32.c index 033d94e..89d3587 100644 --- a/arch/x86/kernel/pci-base_32.c +++ b/arch/x86/kernel/pci-base_32.c @@ -30,6 +30,12 @@ static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, return nents; } +/* Make sure we keep the same behaviour */ +static int pci32_map_error(dma_addr_t dma_addr) +{ + return 0; +} + static const struct dma_mapping_ops pci32_dma_ops = { .map_single = pci32_map_single, .unmap_single = NULL, @@ -41,6 +47,7 @@ static const struct dma_mapping_ops pci32_dma_ops = { .sync_single_range_for_device = NULL, .sync_sg_for_cpu = NULL, .sync_sg_for_device = NULL, + .mapping_error = pci32_map_error, }; const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 908fcaa..352433b 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -54,6 +54,14 @@ struct dma_mapping_ops { extern const struct dma_mapping_ops *dma_ops; +static inline int dma_mapping_error(dma_addr_t dma_addr) +{ + if (dma_ops->mapping_error) + return dma_ops->mapping_error(dma_addr); + + return (dma_addr == bad_dma_address); +} + #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index d0512c9..03a75f8 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -8,12 +8,6 @@ #include <asm/io.h> #include <asm/bug.h> -static inline int -dma_mapping_error(dma_addr_t dma_addr) -{ - return 0; -} - extern int forbid_dac; static inline int diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h index 352bf41..8353025 100644 --- a/include/asm-x86/dma-mapping_64.h +++ b/include/asm-x86/dma-mapping_64.h @@ -3,14 +3,6 @@ extern int iommu_merge; -static inline int dma_mapping_error(dma_addr_t dma_addr) -{ - if (dma_ops->mapping_error) - return dma_ops->mapping_error(dma_addr); - - return (dma_addr == bad_dma_address); -} - /* same for gart, swiotlb, and nommu */ static inline int dma_get_cache_alignment(void) { -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 19/20] x86: move ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY to dma-mapping.h 2008-03-25 21:36 ` [PATCH 18/20] x86: unify dma_mapping_error Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 2008-03-25 21:36 ` [PATCH 20/20] x86: delete the arch-specific dma-mapping headers Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm define it conditionally to i386 Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 14 ++++++++++++++ include/asm-x86/dma-mapping_32.h | 12 ------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 352433b..9548b19 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -202,4 +202,18 @@ dma_cache_sync(struct device *dev, void *vaddr, size_t size, { flush_write_buffers(); } + +#ifdef CONFIG_X86_32 +# define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY +extern int +dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, + dma_addr_t device_addr, size_t size, int flags); + +extern void +dma_release_declared_memory(struct device *dev); + +extern void * +dma_mark_declared_memory_occupied(struct device *dev, + dma_addr_t device_addr, size_t size); +#endif /* CONFIG_X86_32 */ #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h index 03a75f8..4ec4f45 100644 --- a/include/asm-x86/dma-mapping_32.h +++ b/include/asm-x86/dma-mapping_32.h @@ -20,16 +20,4 @@ dma_get_cache_alignment(void) #define dma_is_consistent(d, h) (1) -#define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY -extern int -dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, - dma_addr_t device_addr, size_t size, int flags); - -extern void -dma_release_declared_memory(struct device *dev); - -extern void * -dma_mark_declared_memory_occupied(struct device *dev, - dma_addr_t device_addr, size_t size); - #endif -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 20/20] x86: delete the arch-specific dma-mapping headers. 2008-03-25 21:36 ` [PATCH 19/20] x86: move ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY to dma-mapping.h Glauber Costa @ 2008-03-25 21:36 ` Glauber Costa 0 siblings, 0 replies; 31+ messages in thread From: Glauber Costa @ 2008-03-25 21:36 UTC (permalink / raw) To: linux-kernel; +Cc: kvm-devel, avi, akpm all the code that is left is ready to be merged as-is in dma-mapping.h Signed-off-by: Glauber Costa <gcosta@redhat.com> --- include/asm-x86/dma-mapping.h | 19 +++++++++++++------ include/asm-x86/dma-mapping_32.h | 23 ----------------------- include/asm-x86/dma-mapping_64.h | 17 ----------------- 3 files changed, 13 insertions(+), 46 deletions(-) delete mode 100644 include/asm-x86/dma-mapping_32.h delete mode 100644 include/asm-x86/dma-mapping_64.h diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h index 9548b19..3809b35 100644 --- a/include/asm-x86/dma-mapping.h +++ b/include/asm-x86/dma-mapping.h @@ -11,6 +11,9 @@ #include <asm/swiotlb.h> extern dma_addr_t bad_dma_address; +extern int iommu_merge; +extern struct device fallback_dev; +extern int panic_on_overflow; struct dma_mapping_ops { int (*mapping_error)(dma_addr_t dma_addr); @@ -75,12 +78,6 @@ void dma_free_coherent(struct device *dev, size_t size, extern int dma_supported(struct device *hwdev, u64 mask); extern int dma_set_mask(struct device *dev, u64 mask); -#ifdef CONFIG_X86_32 -# include "dma-mapping_32.h" -#else -# include "dma-mapping_64.h" -#endif - static inline dma_addr_t dma_map_single(struct device *hwdev, void *ptr, size_t size, int direction) @@ -203,6 +200,15 @@ dma_cache_sync(struct device *dev, void *vaddr, size_t size, flush_write_buffers(); } +static inline int dma_get_cache_alignment(void) +{ + /* no easy way to get cache size on all x86, so return the + * maximum possible, to be safe */ + return boot_cpu_data.x86_clflush_size; +} + +#define dma_is_consistent(d, h) (1) + #ifdef CONFIG_X86_32 # define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY extern int @@ -215,5 +221,6 @@ dma_release_declared_memory(struct device *dev); extern void * dma_mark_declared_memory_occupied(struct device *dev, dma_addr_t device_addr, size_t size); +extern int forbid_dac; #endif /* CONFIG_X86_32 */ #endif diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h deleted file mode 100644 index 4ec4f45..0000000 --- a/include/asm-x86/dma-mapping_32.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _ASM_I386_DMA_MAPPING_H -#define _ASM_I386_DMA_MAPPING_H - -#include <linux/mm.h> -#include <linux/scatterlist.h> - -#include <asm/cache.h> -#include <asm/io.h> -#include <asm/bug.h> - -extern int forbid_dac; - -static inline int -dma_get_cache_alignment(void) -{ - /* no easy way to get cache size on all x86, so return the - * maximum possible, to be safe */ - return boot_cpu_data.x86_clflush_size; -} - -#define dma_is_consistent(d, h) (1) - -#endif diff --git a/include/asm-x86/dma-mapping_64.h b/include/asm-x86/dma-mapping_64.h deleted file mode 100644 index 8353025..0000000 --- a/include/asm-x86/dma-mapping_64.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _X8664_DMA_MAPPING_H -#define _X8664_DMA_MAPPING_H 1 - -extern int iommu_merge; - -/* same for gart, swiotlb, and nommu */ -static inline int dma_get_cache_alignment(void) -{ - return boot_cpu_data.x86_clflush_size; -} - -#define dma_is_consistent(d, h) 1 - -extern struct device fallback_dev; -extern int panic_on_overflow; - -#endif /* _X8664_DMA_MAPPING_H */ -- 1.5.0.6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [PATCH 16/20] x86: align to clflush size 2008-03-25 21:36 ` [PATCH 16/20] x86: align to clflush size Glauber Costa 2008-03-25 21:36 ` [PATCH 17/20] x86: provide a bad_dma_address symbol for i386 Glauber Costa @ 2008-03-26 7:09 ` Ingo Molnar 1 sibling, 0 replies; 31+ messages in thread From: Ingo Molnar @ 2008-03-26 7:09 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, avi, akpm * Glauber Costa <gcosta@redhat.com> wrote: > /* no easy way to get cache size on all x86, so return the > * maximum possible, to be safe */ > - return (1 << INTERNODE_CACHE_SHIFT); > + return boot_cpu_data.x86_clflush_size; please update the comment too. (just add a delta patch to your next series) Ingo ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c 2008-03-25 21:36 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Glauber Costa 2008-03-25 21:36 ` [PATCH 16/20] x86: align to clflush size Glauber Costa @ 2008-03-27 11:03 ` Mark McLoughlin 2008-03-27 11:54 ` Ingo Molnar 1 sibling, 1 reply; 31+ messages in thread From: Mark McLoughlin @ 2008-03-27 11:03 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, avi, akpm On Tue, 2008-03-25 at 18:36 -0300, Glauber Costa wrote: > This is the way x86_64 does, so this make them equal. They have > to be extern now in the header, and the extern definition is moved to > the common dma-mapping.h header > > Signed-off-by: Glauber Costa <gcosta@redhat.com> ... > diff --git a/arch/x86/kernel/pci-dma_32.c b/arch/x86/kernel/pci-dma_32.c > index 5133032..453b4bd 100644 > --- a/arch/x86/kernel/pci-dma_32.c > +++ b/arch/x86/kernel/pci-dma_32.c > @@ -156,6 +156,39 @@ EXPORT_SYMBOL(dma_mark_declared_memory_occupied); > int forbid_dac; > EXPORT_SYMBOL(forbid_dac); > > +int > +dma_supported(struct device *dev, u64 mask) > +{ ... > +} > + > +int > +dma_set_mask(struct device *dev, u64 mask) > +{ ... > +} ... > diff --git a/include/asm-x86/dma-mapping_32.h b/include/asm-x86/dma-mapping_32.h > index e60c30a..fd7246d 100644 > --- a/include/asm-x86/dma-mapping_32.h > +++ b/include/asm-x86/dma-mapping_32.h > @@ -17,35 +17,6 @@ dma_mapping_error(dma_addr_t dma_addr) > extern int forbid_dac; > > static inline int > -dma_supported(struct device *dev, u64 mask) > -{ ... > -} > - > -static inline int > -dma_set_mask(struct device *dev, u64 mask) > -{ ... > -} This breaks for me with: ERROR: "dma_supported" [drivers/ssb/ssb.ko] undefined! ERROR: "dma_set_mask" [drivers/scsi/qla2xxx/qla2xxx.ko] undefined! ERROR: "dma_set_mask" [drivers/scsi/aic7xxx/aic7xxx.ko] undefined! ERROR: "dma_set_mask" [drivers/scsi/aic7xxx/aic79xx.ko] undefined! ERROR: "dma_supported" [drivers/net/pcnet32.ko] undefined! ERROR: "dma_supported" [drivers/media/video/saa7134/saa7134.ko] undefined! ERROR: "dma_set_mask" [drivers/media/video/meye.ko] undefined! ERROR: "dma_supported" [drivers/media/video/cx88/cx8802.ko] undefined! ERROR: "dma_supported" [drivers/media/video/cx88/cx8800.ko] undefined! ERROR: "dma_supported" [drivers/media/video/cx88/cx88-alsa.ko] undefined! ERROR: "dma_supported" [drivers/media/video/cx23885/cx23885.ko] undefined! They just need to be exported like on x86_64. Cheers, Mark. Subject: [PATCH] x86: export dma_supported() and dma_set_mask() on i386 dma_supported() and dma_set_mask() were previously inlined, but are now moved to pci-dma_32.c. Since they're used by various drivers, they need to be exported. Signed-off-by: Mark McLoughlin <markmc@redhat.com> --- arch/x86/kernel/pci-dma_32.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/pci-dma_32.c b/arch/x86/kernel/pci-dma_32.c index 55ab3c8..be6b1f6 100644 --- a/arch/x86/kernel/pci-dma_32.c +++ b/arch/x86/kernel/pci-dma_32.c @@ -180,6 +180,7 @@ dma_supported(struct device *dev, u64 mask) return 1; } +EXPORT_SYMBOL(dma_supported); int dma_set_mask(struct device *dev, u64 mask) @@ -191,6 +192,7 @@ dma_set_mask(struct device *dev, u64 mask) return 0; } +EXPORT_SYMBOL(dma_set_mask); static __devinit void via_no_dac(struct pci_dev *dev) ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c 2008-03-27 11:03 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Mark McLoughlin @ 2008-03-27 11:54 ` Ingo Molnar 0 siblings, 0 replies; 31+ messages in thread From: Ingo Molnar @ 2008-03-27 11:54 UTC (permalink / raw) To: Mark McLoughlin; +Cc: kvm-devel, linux-kernel, avi, Glauber Costa, akpm * Mark McLoughlin <markmc@redhat.com> wrote: > This breaks for me with: > > ERROR: "dma_supported" [drivers/ssb/ssb.ko] undefined! > ERROR: "dma_set_mask" [drivers/scsi/qla2xxx/qla2xxx.ko] undefined! > ERROR: "dma_set_mask" [drivers/scsi/aic7xxx/aic7xxx.ko] undefined! > ERROR: "dma_set_mask" [drivers/scsi/aic7xxx/aic79xx.ko] undefined! > ERROR: "dma_supported" [drivers/net/pcnet32.ko] undefined! > ERROR: "dma_supported" [drivers/media/video/saa7134/saa7134.ko] undefined! > ERROR: "dma_set_mask" [drivers/media/video/meye.ko] undefined! > ERROR: "dma_supported" [drivers/media/video/cx88/cx8802.ko] undefined! > ERROR: "dma_supported" [drivers/media/video/cx88/cx8800.ko] undefined! > ERROR: "dma_supported" [drivers/media/video/cx88/cx88-alsa.ko] undefined! > ERROR: "dma_supported" [drivers/media/video/cx23885/cx23885.ko] undefined! > > They just need to be exported like on x86_64. thanks Mark, applied. Ingo ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-25 21:36 [PATCH 0/20] dma_ops for i386 Glauber Costa 2008-03-25 21:36 ` [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h Glauber Costa @ 2008-03-26 7:06 ` Ingo Molnar 2008-03-26 12:49 ` Ingo Molnar 2008-03-26 10:01 ` Avi Kivity 2008-03-27 9:49 ` Amit Shah 3 siblings, 1 reply; 31+ messages in thread From: Ingo Molnar @ 2008-03-26 7:06 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, avi, akpm * Glauber Costa <gcosta@redhat.com> wrote: > Hello, > > Here there is a series of 20 patches that lays the foundations for > using dma_ops in i386 in the very same way x86_64, as well as many > other architectures already do. > > The functions themselves for i386 are placed in a pci-base_32.c, but > just a few among them are actually implemented. Most were no-ops > anyway. > > Also, as I said, this is by no means a complete coverage of dma_ops. > there are still some call sites to be patches in pci-dma_32.c > (although I don't really plan to change them, but to integrate them in > a single pci-dma.c). I intend to have it done progressively. > > The granularity is per-operation, meaning each patch moves one > specific function to the common header. This is compiled-tested in > both i386 and x86_64 in ~5 randconfigs each, and boot-tested in my > hardware with my default configs > > The motivation for that is the ongoing work for pci-passthrough in > KVM. So ingo, avi, what do you think it's the best way to handle these > patches through? looks very nice to me! I've applied it to x86.git, lets see what happens. Ingo ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-26 7:06 ` [PATCH 0/20] dma_ops for i386 Ingo Molnar @ 2008-03-26 12:49 ` Ingo Molnar 2008-03-26 13:04 ` Ingo Molnar 0 siblings, 1 reply; 31+ messages in thread From: Ingo Molnar @ 2008-03-26 12:49 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, avi, akpm [-- Attachment #1: Type: text/plain, Size: 4070 bytes --] * Ingo Molnar <mingo@elte.hu> wrote: > > The motivation for that is the ongoing work for pci-passthrough in > > KVM. So ingo, avi, what do you think it's the best way to handle > > these patches through? > > looks very nice to me! I've applied it to x86.git, lets see what > happens. Houston, we've got a problem! :-/ randconfig testing found that this patchset broke sendfile on certain .config's - DMA started returning all 0xfffffffff data, corrupting files. (config attached) After some bisection fun it turns out that the conversions from struct page are wrong: +static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, + size_t offset, size_t size, + int direction) +{ + return dma_map_single(dev, page_address(page)+offset, size, direction); because page_address() is not defined for highmem pages in general. (and even if it's defined, it will corrupt data) changing it to page_to_phys() is not good because it goes via a 32-bit bottleneck that trims things on PAE: dma_addr_t (*map_single)(struct device *hwdev, void *ptr, the 'ptr' is 32-bit albeit it's a DMA target. what i came up is the prototype 32-bit fix below - this works on 32-bit but breaks 64-bit because we pass in physical addresses instead of virtual direct addresses. i'll fix the 64-bit side but that means materially touching all the dma_mapping_ops instantiations materially on the 64-bit side - not really something we wanted to do :-/ Ingo ----------------> Subject: x86: dma-ops on highmem fix From: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/x86/kernel/pci-base_32.c | 4 ++-- include/asm-x86/dma-mapping.h | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) Index: linux-x86.q/arch/x86/kernel/pci-base_32.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-base_32.c +++ linux-x86.q/arch/x86/kernel/pci-base_32.c @@ -4,12 +4,12 @@ #include <linux/dma-mapping.h> #include <asm/dma-mapping.h> -static dma_addr_t pci32_map_single(struct device *dev, void *ptr, +static dma_addr_t pci32_map_single(struct device *dev, u64 ptr, size_t size, int direction) { WARN_ON(size == 0); flush_write_buffers(); - return virt_to_phys(ptr); + return ptr; } static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, Index: linux-x86.q/include/asm-x86/dma-mapping.h =================================================================== --- linux-x86.q.orig/include/asm-x86/dma-mapping.h +++ linux-x86.q/include/asm-x86/dma-mapping.h @@ -16,10 +16,10 @@ struct dma_mapping_ops { dma_addr_t *dma_handle, gfp_t gfp); void (*free_coherent)(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); - dma_addr_t (*map_single)(struct device *hwdev, void *ptr, + dma_addr_t (*map_single)(struct device *hwdev, u64 ptr, size_t size, int direction); /* like map_single, but doesn't check the device mask */ - dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, + dma_addr_t (*map_simple)(struct device *hwdev, u64 ptr, size_t size, int direction); void (*unmap_single)(struct device *dev, dma_addr_t addr, size_t size, int direction); @@ -73,7 +73,7 @@ dma_map_single(struct device *hwdev, voi int direction) { BUG_ON(!valid_dma_direction(direction)); - return dma_ops->map_single(hwdev, ptr, size, direction); + return dma_ops->map_single(hwdev, virt_to_phys(ptr), size, direction); } static inline void @@ -174,7 +174,9 @@ static inline dma_addr_t dma_map_page(st size_t offset, size_t size, int direction) { - return dma_map_single(dev, page_address(page)+offset, size, direction); + BUG_ON(!valid_dma_direction(direction)); + return dma_ops->map_single(dev, page_to_phys(page)+offset, + size, direction); } static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, [-- Attachment #2: config --] [-- Type: text/plain, Size: 45675 bytes --] # # Automatically generated make config: don't edit # Linux kernel version: 2.6.25-rc7 # Wed Mar 26 12:48:59 2008 # # CONFIG_64BIT is not set CONFIG_X86_32=y # CONFIG_X86_64 is not set CONFIG_X86=y # CONFIG_GENERIC_LOCKBREAK is not set CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_FAST_CMPXCHG_LOCAL=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y # CONFIG_GENERIC_GPIO is not set CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMI=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y # CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y # CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y # CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_X86_SMP=y CONFIG_X86_32_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y CONFIG_X86_TRAMPOLINE=y CONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y # CONFIG_SWAP is not set # CONFIG_SYSVIPC is not set CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set # CONFIG_TASK_XACCT is not set # CONFIG_AUDIT is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=20 CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_NS=y CONFIG_CPUSETS=y # CONFIG_GROUP_SCHED is not set # CONFIG_CGROUP_CPUACCT is not set CONFIG_RESOURCE_COUNTERS=y # CONFIG_CGROUP_MEM_RES_CTLR is not set CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y # CONFIG_PROC_PID_CPUSET is not set CONFIG_RELAY=y CONFIG_NAMESPACES=y # CONFIG_UTS_NS is not set # CONFIG_USER_NS is not set CONFIG_PID_NS=y # CONFIG_BLK_DEV_INITRD is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_COMPAT_BRK=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set # CONFIG_PROFILING is not set # CONFIG_MARKERS is not set CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 # CONFIG_MODULES is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y # CONFIG_LBD is not set CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_LSF is not set # CONFIG_BLK_DEV_BSG is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y # CONFIG_IOSCHED_DEADLINE is not set # CONFIG_IOSCHED_CFQ is not set # CONFIG_DEFAULT_AS is not set # CONFIG_DEFAULT_DEADLINE is not set # CONFIG_DEFAULT_CFQ is not set CONFIG_DEFAULT_NOOP=y CONFIG_DEFAULT_IOSCHED="noop" CONFIG_PREEMPT_NOTIFIERS=y # CONFIG_CLASSIC_RCU is not set # # Processor type and features # # CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set # CONFIG_X86_NUMAQ is not set # CONFIG_X86_SUMMIT is not set # CONFIG_X86_BIGSMP is not set # CONFIG_X86_VISWS is not set # CONFIG_X86_GENERICARCH is not set # CONFIG_X86_ES7000 is not set # CONFIG_X86_RDC321X is not set # CONFIG_X86_VSMP is not set # CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER is not set # CONFIG_PARAVIRT_GUEST is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set # CONFIG_M686 is not set # CONFIG_MPENTIUMII is not set # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUMM is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set # CONFIG_MK8 is not set # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set CONFIG_MCYRIXIII=y # CONFIG_MVIAC3_2 is not set # CONFIG_MVIAC7 is not set # CONFIG_MPSC is not set # CONFIG_MCORE2 is not set # CONFIG_GENERIC_CPU is not set CONFIG_X86_GENERIC=y CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=7 CONFIG_X86_XADD=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_ALIGNMENT_16=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_USE_3DNOW=y CONFIG_X86_TSC=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_X86_DEBUGCTLMSR=y # CONFIG_HPET_TIMER is not set # CONFIG_IOMMU_HELPER is not set CONFIG_NR_CPUS=8 # CONFIG_SCHED_SMT is not set CONFIG_SCHED_MC=y # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_RCU=y # CONFIG_RCU_TRACE is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_MCE=y # CONFIG_X86_MCE_NONFATAL is not set # CONFIG_X86_MCE_P4THERMAL is not set CONFIG_VM86=y # CONFIG_TOSHIBA is not set CONFIG_I8K=y CONFIG_X86_REBOOTFIXUPS=y CONFIG_MICROCODE=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=y # CONFIG_X86_CPUID is not set # CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=y CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=y CONFIG_X86_PAE=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_HIGHPTE=y # CONFIG_MATH_EMULATION is not set # CONFIG_MTRR is not set # CONFIG_EFI is not set # CONFIG_IRQBALANCE is not set # CONFIG_SECCOMP is not set CONFIG_HZ_100=y # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=100 # CONFIG_SCHED_HRTICK is not set # CONFIG_KEXEC is not set CONFIG_CRASH_DUMP=y CONFIG_PHYSICAL_START=0x100000 CONFIG_RELOCATABLE=y CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_HOTPLUG_CPU=y CONFIG_COMPAT_VDSO=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management options # CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set # CONFIG_SUSPEND is not set CONFIG_ACPI=y # CONFIG_ACPI_PROCFS is not set CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y # CONFIG_ACPI_AC is not set CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y # CONFIG_ACPI_FAN is not set CONFIG_ACPI_DOCK=y # CONFIG_ACPI_BAY is not set CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y # CONFIG_ACPI_THERMAL is not set # CONFIG_ACPI_WMI is not set # CONFIG_ACPI_ASUS is not set CONFIG_ACPI_TOSHIBA=y # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y # CONFIG_ACPI_SBS is not set # # CPU Frequency scaling # # CONFIG_CPU_FREQ is not set CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y # # Bus options (PCI etc.) # CONFIG_PCI=y # CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GOMMCONFIG is not set CONFIG_PCI_GODIRECT=y # CONFIG_PCI_GOANY is not set CONFIG_PCI_DIRECT=y CONFIG_PCI_DOMAINS=y # CONFIG_PCIEPORTBUS is not set CONFIG_ARCH_SUPPORTS_MSI=y # CONFIG_PCI_MSI is not set # CONFIG_PCI_LEGACY is not set CONFIG_HT_IRQ=y CONFIG_ISA_DMA_API=y # CONFIG_ISA is not set # CONFIG_MCA is not set # CONFIG_SCx200 is not set CONFIG_K8_NB=y CONFIG_PCCARD=y # CONFIG_PCMCIA_DEBUG is not set CONFIG_PCMCIA=y CONFIG_PCMCIA_LOAD_CIS=y CONFIG_PCMCIA_IOCTL=y # CONFIG_CARDBUS is not set # # PC-card bridges # # CONFIG_YENTA is not set # CONFIG_PD6729 is not set # CONFIG_I82092 is not set # CONFIG_HOTPLUG_PCI is not set # # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_MISC=y # # Networking # CONFIG_NET=y # # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y CONFIG_XFRM=y # CONFIG_XFRM_USER is not set # CONFIG_XFRM_SUB_POLICY is not set CONFIG_XFRM_MIGRATE=y CONFIG_XFRM_STATISTICS=y # CONFIG_NET_KEY is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y # CONFIG_ASK_IP_FIB_HASH is not set CONFIG_IP_FIB_TRIE=y # CONFIG_IP_FIB_HASH is not set CONFIG_IP_FIB_TRIE_STATS=y # CONFIG_IP_MULTIPLE_TABLES is not set CONFIG_IP_ROUTE_MULTIPATH=y # CONFIG_IP_ROUTE_VERBOSE is not set # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set CONFIG_NET_IPGRE=y # CONFIG_NET_IPGRE_BROADCAST is not set CONFIG_IP_MROUTE=y # CONFIG_IP_PIMSM_V1 is not set # CONFIG_IP_PIMSM_V2 is not set CONFIG_ARPD=y CONFIG_SYN_COOKIES=y # CONFIG_INET_AH is not set CONFIG_INET_ESP=y # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y # CONFIG_INET_XFRM_MODE_BEET is not set CONFIG_INET_LRO=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=y # CONFIG_TCP_CONG_CUBIC is not set CONFIG_TCP_CONG_WESTWOOD=y CONFIG_TCP_CONG_HTCP=y CONFIG_TCP_CONG_HSTCP=y # CONFIG_TCP_CONG_HYBLA is not set CONFIG_TCP_CONG_VEGAS=y CONFIG_TCP_CONG_SCALABLE=y CONFIG_TCP_CONG_LP=y CONFIG_TCP_CONG_VENO=y CONFIG_TCP_CONG_YEAH=y CONFIG_TCP_CONG_ILLINOIS=y # CONFIG_DEFAULT_BIC is not set # CONFIG_DEFAULT_CUBIC is not set # CONFIG_DEFAULT_HTCP is not set # CONFIG_DEFAULT_VEGAS is not set # CONFIG_DEFAULT_WESTWOOD is not set CONFIG_DEFAULT_RENO=y CONFIG_DEFAULT_TCP_CONG="reno" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set # CONFIG_NETLABEL is not set CONFIG_NETWORK_SECMARK=y # CONFIG_NETFILTER is not set # CONFIG_IP_DCCP is not set CONFIG_IP_SCTP=y CONFIG_SCTP_DBG_MSG=y # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set CONFIG_SCTP_HMAC_SHA1=y # CONFIG_SCTP_HMAC_MD5 is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set CONFIG_BRIDGE=y CONFIG_VLAN_8021Q=y CONFIG_DECNET=y # CONFIG_DECNET_ROUTER is not set CONFIG_LLC=y # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set CONFIG_X25=y CONFIG_LAPB=y CONFIG_ECONET=y # CONFIG_ECONET_AUNUDP is not set CONFIG_ECONET_NATIVE=y # CONFIG_WAN_ROUTER is not set CONFIG_NET_SCHED=y # # Queueing/Scheduling # # CONFIG_NET_SCH_CBQ is not set CONFIG_NET_SCH_HTB=y CONFIG_NET_SCH_HFSC=y CONFIG_NET_SCH_PRIO=y CONFIG_NET_SCH_RR=y CONFIG_NET_SCH_RED=y CONFIG_NET_SCH_SFQ=y CONFIG_NET_SCH_TEQL=y # CONFIG_NET_SCH_TBF is not set CONFIG_NET_SCH_GRED=y # CONFIG_NET_SCH_DSMARK is not set # CONFIG_NET_SCH_NETEM is not set # # Classification # CONFIG_NET_CLS=y CONFIG_NET_CLS_BASIC=y CONFIG_NET_CLS_TCINDEX=y CONFIG_NET_CLS_ROUTE4=y CONFIG_NET_CLS_ROUTE=y CONFIG_NET_CLS_FW=y CONFIG_NET_CLS_U32=y CONFIG_CLS_U32_PERF=y CONFIG_CLS_U32_MARK=y CONFIG_NET_CLS_RSVP=y CONFIG_NET_CLS_RSVP6=y # CONFIG_NET_CLS_FLOW is not set # CONFIG_NET_EMATCH is not set # CONFIG_NET_CLS_ACT is not set # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y # # Network testing # # CONFIG_NET_PKTGEN is not set CONFIG_HAMRADIO=y # # Packet Radio protocols # CONFIG_AX25=y # CONFIG_AX25_DAMA_SLAVE is not set CONFIG_NETROM=y # CONFIG_ROSE is not set # # AX.25 network device drivers # CONFIG_MKISS=y # CONFIG_6PACK is not set # CONFIG_BPQETHER is not set # CONFIG_BAYCOM_SER_FDX is not set CONFIG_BAYCOM_SER_HDX=y # CONFIG_YAM is not set # CONFIG_CAN is not set CONFIG_IRDA=y # # IrDA protocols # # CONFIG_IRLAN is not set # CONFIG_IRNET is not set CONFIG_IRCOMM=y # CONFIG_IRDA_ULTRA is not set # # IrDA options # CONFIG_IRDA_CACHE_LAST_LSAP=y CONFIG_IRDA_FAST_RR=y # CONFIG_IRDA_DEBUG is not set # # Infrared-port device drivers # # # SIR device drivers # CONFIG_IRTTY_SIR=y # # Dongle support # # CONFIG_DONGLE is not set CONFIG_KINGSUN_DONGLE=y # CONFIG_KSDAZZLE_DONGLE is not set CONFIG_KS959_DONGLE=y # # FIR device drivers # # CONFIG_USB_IRDA is not set # CONFIG_SIGMATEL_FIR is not set # CONFIG_NSC_FIR is not set # CONFIG_WINBOND_FIR is not set # CONFIG_TOSHIBA_FIR is not set CONFIG_SMC_IRCC_FIR=y CONFIG_ALI_FIR=y CONFIG_VLSI_FIR=y CONFIG_VIA_FIR=y # CONFIG_MCS_FIR is not set CONFIG_BT=y CONFIG_BT_L2CAP=y # CONFIG_BT_SCO is not set CONFIG_BT_RFCOMM=y # CONFIG_BT_RFCOMM_TTY is not set CONFIG_BT_BNEP=y # CONFIG_BT_BNEP_MC_FILTER is not set # CONFIG_BT_BNEP_PROTO_FILTER is not set CONFIG_BT_HIDP=y # # Bluetooth device drivers # # CONFIG_BT_HCIUSB is not set CONFIG_BT_HCIBTUSB=y CONFIG_BT_HCIUART=y CONFIG_BT_HCIUART_H4=y # CONFIG_BT_HCIUART_BCSP is not set CONFIG_BT_HCIUART_LL=y # CONFIG_BT_HCIBCM203X is not set CONFIG_BT_HCIBPA10X=y CONFIG_BT_HCIBFUSB=y # CONFIG_BT_HCIDTL1 is not set CONFIG_BT_HCIBT3C=y # CONFIG_BT_HCIBLUECARD is not set CONFIG_BT_HCIBTUART=y # CONFIG_BT_HCIVHCI is not set CONFIG_AF_RXRPC=y CONFIG_AF_RXRPC_DEBUG=y CONFIG_RXKAD=y # # Wireless # CONFIG_CFG80211=y # CONFIG_NL80211 is not set CONFIG_WIRELESS_EXT=y CONFIG_MAC80211=y # # Rate control algorithm selection # CONFIG_MAC80211_RC_DEFAULT_PID=y # CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set # CONFIG_MAC80211_RC_DEFAULT_NONE is not set # # Selecting 'y' for an algorithm will # # # build the algorithm into mac80211. # CONFIG_MAC80211_RC_DEFAULT="pid" CONFIG_MAC80211_RC_PID=y CONFIG_MAC80211_RC_SIMPLE=y # CONFIG_MAC80211_DEBUGFS is not set CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT=y # CONFIG_MAC80211_DEBUG is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=y CONFIG_IEEE80211_CRYPT_CCMP=y # CONFIG_IEEE80211_CRYPT_TKIP is not set CONFIG_IEEE80211_SOFTMAC=y # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set # CONFIG_RFKILL is not set CONFIG_NET_9P=y CONFIG_NET_9P_FD=y # CONFIG_NET_9P_VIRTIO is not set # CONFIG_NET_9P_DEBUG is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set # CONFIG_PARPORT is not set CONFIG_PNP=y CONFIG_PNP_DEBUG=y # # Protocols # CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set CONFIG_BLK_CPQ_DA=y CONFIG_BLK_CPQ_CISS_DA=y # CONFIG_CISS_SCSI_TAPE is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_UMEM=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_XIP=y # CONFIG_CDROM_PKTCDVD is not set CONFIG_ATA_OVER_ETH=y # CONFIG_VIRTIO_BLK is not set # CONFIG_MISC_DEVICES is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y CONFIG_SCSI_DMA=y CONFIG_SCSI_TGT=y CONFIG_SCSI_NETLINK=y # CONFIG_SCSI_PROC_FS is not set # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set CONFIG_CHR_DEV_OSST=y # CONFIG_BLK_DEV_SR is not set # CONFIG_CHR_DEV_SG is not set # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set CONFIG_SCSI_LOGGING=y # CONFIG_SCSI_SCAN_ASYNC is not set # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=y CONFIG_SCSI_FC_ATTRS=y # CONFIG_SCSI_FC_TGT_ATTRS is not set CONFIG_SCSI_ISCSI_ATTRS=y CONFIG_SCSI_SAS_ATTRS=y CONFIG_SCSI_SAS_LIBSAS=y CONFIG_SCSI_SAS_ATA=y CONFIG_SCSI_SAS_HOST_SMP=y CONFIG_SCSI_SAS_LIBSAS_DEBUG=y # CONFIG_SCSI_SRP_ATTRS is not set CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set CONFIG_BLK_DEV_3W_XXXX_RAID=y CONFIG_SCSI_3W_9XXX=y # CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_AACRAID is not set CONFIG_SCSI_AIC7XXX=y CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 CONFIG_AIC7XXX_RESET_DELAY_MS=5000 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 # CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set # CONFIG_SCSI_AIC7XXX_OLD is not set # CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC94XX is not set CONFIG_SCSI_DPT_I2O=y # CONFIG_SCSI_ADVANSYS is not set CONFIG_SCSI_ARCMSR=y # CONFIG_MEGARAID_NEWGEN is not set CONFIG_MEGARAID_LEGACY=y # CONFIG_MEGARAID_SAS is not set CONFIG_SCSI_HPTIOP=y # CONFIG_SCSI_BUSLOGIC is not set CONFIG_SCSI_DMX3191D=y # CONFIG_SCSI_EATA is not set CONFIG_SCSI_FUTURE_DOMAIN=y # CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_IPS is not set CONFIG_SCSI_INITIO=y CONFIG_SCSI_INIA100=y # CONFIG_SCSI_MVSAS is not set CONFIG_SCSI_STEX=y CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 CONFIG_SCSI_SYM53C8XX_MMIO=y CONFIG_SCSI_IPR=y # CONFIG_SCSI_IPR_TRACE is not set # CONFIG_SCSI_IPR_DUMP is not set CONFIG_SCSI_QLOGIC_1280=y CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA_ISCSI=y CONFIG_SCSI_LPFC=y CONFIG_SCSI_DC395x=y CONFIG_SCSI_DC390T=y CONFIG_SCSI_NSP32=y # CONFIG_SCSI_DEBUG is not set CONFIG_SCSI_SRP=y # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y CONFIG_SATA_AHCI=y # CONFIG_SATA_SVW is not set CONFIG_ATA_PIIX=y # CONFIG_SATA_MV is not set # CONFIG_SATA_NV is not set # CONFIG_PDC_ADMA is not set # CONFIG_SATA_QSTOR is not set # CONFIG_SATA_PROMISE is not set # CONFIG_SATA_SX4 is not set CONFIG_SATA_SIL=y # CONFIG_SATA_SIL24 is not set CONFIG_SATA_SIS=y # CONFIG_SATA_ULI is not set CONFIG_SATA_VIA=y CONFIG_SATA_VITESSE=y # CONFIG_SATA_INIC162X is not set CONFIG_PATA_ACPI=y # CONFIG_PATA_ALI is not set CONFIG_PATA_AMD=y CONFIG_PATA_ARTOP=y # CONFIG_PATA_ATIIXP is not set CONFIG_PATA_CMD640_PCI=y # CONFIG_PATA_CMD64X is not set # CONFIG_PATA_CS5520 is not set # CONFIG_PATA_CS5530 is not set CONFIG_PATA_CS5535=y # CONFIG_PATA_CS5536 is not set # CONFIG_PATA_CYPRESS is not set CONFIG_PATA_EFAR=y CONFIG_ATA_GENERIC=y # CONFIG_PATA_HPT366 is not set # CONFIG_PATA_HPT37X is not set CONFIG_PATA_HPT3X2N=y # CONFIG_PATA_HPT3X3 is not set CONFIG_PATA_IT821X=y CONFIG_PATA_IT8213=y CONFIG_PATA_JMICRON=y # CONFIG_PATA_TRIFLEX is not set CONFIG_PATA_MARVELL=y # CONFIG_PATA_MPIIX is not set CONFIG_PATA_OLDPIIX=y CONFIG_PATA_NETCELL=y # CONFIG_PATA_NINJA32 is not set CONFIG_PATA_NS87410=y # CONFIG_PATA_NS87415 is not set CONFIG_PATA_OPTI=y # CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_PCMCIA is not set CONFIG_PATA_PDC_OLD=y CONFIG_PATA_RADISYS=y CONFIG_PATA_RZ1000=y # CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SERVERWORKS is not set CONFIG_PATA_PDC2027X=y # CONFIG_PATA_SIL680 is not set CONFIG_PATA_SIS=y # CONFIG_PATA_VIA is not set CONFIG_PATA_WINBOND=y # CONFIG_MD is not set # CONFIG_FUSION is not set # # IEEE 1394 (FireWire) support # CONFIG_FIREWIRE=y CONFIG_FIREWIRE_OHCI=y CONFIG_FIREWIRE_SBP2=y # CONFIG_IEEE1394 is not set CONFIG_I2O=y # CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set # CONFIG_I2O_EXT_ADAPTEC is not set # CONFIG_I2O_CONFIG is not set CONFIG_I2O_BUS=y # CONFIG_I2O_BLOCK is not set CONFIG_I2O_SCSI=y # CONFIG_I2O_PROC is not set CONFIG_MACINTOSH_DRIVERS=y # CONFIG_MAC_EMUMOUSEBTN is not set CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set CONFIG_MACVLAN=y # CONFIG_EQUALIZER is not set CONFIG_TUN=y CONFIG_VETH=y CONFIG_NET_SB1000=y # CONFIG_ARCNET is not set CONFIG_PHYLIB=y # # MII PHY device drivers # CONFIG_MARVELL_PHY=y # CONFIG_DAVICOM_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_LXT_PHY is not set # CONFIG_CICADA_PHY is not set CONFIG_VITESSE_PHY=y # CONFIG_SMSC_PHY is not set CONFIG_BROADCOM_PHY=y # CONFIG_ICPLUS_PHY is not set # CONFIG_REALTEK_PHY is not set # CONFIG_FIXED_PHY is not set # CONFIG_MDIO_BITBANG is not set CONFIG_NET_ETHERNET=y CONFIG_MII=y CONFIG_HAPPYMEAL=y CONFIG_SUNGEM=y CONFIG_CASSINI=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_ENC28J60 is not set CONFIG_NET_TULIP=y # CONFIG_DE2104X is not set # CONFIG_TULIP is not set CONFIG_DE4X5=y CONFIG_WINBOND_840=y # CONFIG_DM9102 is not set CONFIG_ULI526X=y # CONFIG_HP100 is not set # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set CONFIG_NET_PCI=y CONFIG_PCNET32=y CONFIG_PCNET32_NAPI=y # CONFIG_AMD8111_ETH is not set # CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_B44 is not set CONFIG_FORCEDETH=y # CONFIG_FORCEDETH_NAPI is not set CONFIG_EEPRO100=y CONFIG_E100=y CONFIG_FEALNX=y # CONFIG_NATSEMI is not set CONFIG_NE2K_PCI=y CONFIG_8139CP=y CONFIG_8139TOO=y CONFIG_8139TOO_PIO=y # CONFIG_8139TOO_TUNE_TWISTER is not set CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_R6040=y CONFIG_SIS900=y # CONFIG_EPIC100 is not set CONFIG_SUNDANCE=y # CONFIG_SUNDANCE_MMIO is not set # CONFIG_TLAN is not set CONFIG_VIA_RHINE=y CONFIG_VIA_RHINE_MMIO=y # CONFIG_VIA_RHINE_NAPI is not set CONFIG_SC92031=y CONFIG_NETDEV_1000=y # CONFIG_ACENIC is not set # CONFIG_DL2K is not set CONFIG_E1000=y CONFIG_E1000_NAPI=y CONFIG_E1000_DISABLE_PACKET_SPLIT=y # CONFIG_E1000E is not set # CONFIG_E1000E_ENABLED is not set # CONFIG_IP1000 is not set # CONFIG_IGB is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set CONFIG_YELLOWFIN=y # CONFIG_R8169 is not set # CONFIG_SIS190 is not set CONFIG_SKGE=y CONFIG_SKGE_DEBUG=y CONFIG_SKY2=y # CONFIG_SKY2_DEBUG is not set # CONFIG_SK98LIN is not set # CONFIG_VIA_VELOCITY is not set CONFIG_TIGON3=y CONFIG_BNX2=y # CONFIG_QLA3XXX is not set # CONFIG_ATL1 is not set # CONFIG_NETDEV_10000 is not set CONFIG_TR=y CONFIG_IBMOL=y # CONFIG_IBMLS is not set # CONFIG_3C359 is not set CONFIG_TMS380TR=y CONFIG_TMSPCI=y CONFIG_ABYSS=y # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set # CONFIG_WLAN_80211 is not set # # USB Network Adapters # CONFIG_USB_CATC=y CONFIG_USB_KAWETH=y # CONFIG_USB_PEGASUS is not set # CONFIG_USB_RTL8150 is not set CONFIG_USB_USBNET=y # CONFIG_USB_NET_AX8817X is not set CONFIG_USB_NET_CDCETHER=y # CONFIG_USB_NET_DM9601 is not set # CONFIG_USB_NET_GL620A is not set CONFIG_USB_NET_NET1080=y CONFIG_USB_NET_PLUSB=y # CONFIG_USB_NET_MCS7830 is not set # CONFIG_USB_NET_RNDIS_HOST is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set CONFIG_NET_PCMCIA=y # CONFIG_PCMCIA_3C589 is not set CONFIG_PCMCIA_3C574=y CONFIG_PCMCIA_FMVJ18X=y CONFIG_PCMCIA_PCNET=y # CONFIG_PCMCIA_NMCLAN is not set CONFIG_PCMCIA_SMC91C92=y # CONFIG_PCMCIA_XIRC2PS is not set CONFIG_PCMCIA_AXNET=y CONFIG_PCMCIA_IBMTR=y # CONFIG_WAN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PPP=y # CONFIG_PPP_MULTILINK is not set CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=y CONFIG_PPP_BSDCOMP=y # CONFIG_PPP_MPPE is not set CONFIG_PPPOE=y # CONFIG_PPPOL2TP is not set # CONFIG_SLIP is not set CONFIG_SLHC=y # CONFIG_NET_FC is not set CONFIG_NETCONSOLE=y # CONFIG_NETCONSOLE_DYNAMIC is not set CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y # CONFIG_VIRTIO_NET is not set # CONFIG_ISDN is not set CONFIG_PHONE=y # CONFIG_PHONE_IXJ is not set # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=y CONFIG_INPUT_POLLDEV=y # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set CONFIG_INPUT_EVBUG=y # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set CONFIG_KEYBOARD_STOWAWAY=y CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_MOUSE_PS2_TOUCHKIT=y # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set CONFIG_MOUSE_VSXXXAA=y CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set CONFIG_JOYSTICK_A3D=y CONFIG_JOYSTICK_ADI=y # CONFIG_JOYSTICK_COBRA is not set CONFIG_JOYSTICK_GF2K=y # CONFIG_JOYSTICK_GRIP is not set # CONFIG_JOYSTICK_GRIP_MP is not set CONFIG_JOYSTICK_GUILLEMOT=y CONFIG_JOYSTICK_INTERACT=y # CONFIG_JOYSTICK_SIDEWINDER is not set # CONFIG_JOYSTICK_TMDC is not set CONFIG_JOYSTICK_IFORCE=y # CONFIG_JOYSTICK_IFORCE_USB is not set # CONFIG_JOYSTICK_IFORCE_232 is not set CONFIG_JOYSTICK_WARRIOR=y # CONFIG_JOYSTICK_MAGELLAN is not set # CONFIG_JOYSTICK_SPACEORB is not set CONFIG_JOYSTICK_SPACEBALL=y # CONFIG_JOYSTICK_STINGER is not set CONFIG_JOYSTICK_TWIDJOY=y CONFIG_JOYSTICK_JOYDUMP=y # CONFIG_JOYSTICK_XPAD is not set # CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ADS7846=y # CONFIG_TOUCHSCREEN_FUJITSU is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_ELO is not set CONFIG_TOUCHSCREEN_MTOUCH=y # CONFIG_TOUCHSCREEN_MK712 is not set CONFIG_TOUCHSCREEN_PENMOUNT=y CONFIG_TOUCHSCREEN_TOUCHRIGHT=y CONFIG_TOUCHSCREEN_TOUCHWIN=y CONFIG_TOUCHSCREEN_UCB1400=y # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_PCSPKR is not set # CONFIG_INPUT_APANEL is not set # CONFIG_INPUT_WISTRON_BTNS is not set # CONFIG_INPUT_ATLAS_BTNS is not set CONFIG_INPUT_ATI_REMOTE=y # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_POWERMATE is not set # CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_UINPUT is not set # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y CONFIG_SERIO_RAW=y CONFIG_GAMEPORT=y # CONFIG_GAMEPORT_NS558 is not set # CONFIG_GAMEPORT_L4 is not set # CONFIG_GAMEPORT_EMU10K1 is not set CONFIG_GAMEPORT_FM801=y # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_NOZOMI is not set # # Serial drivers # CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y # CONFIG_SERIAL_8250_CS is not set CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y # CONFIG_SERIAL_8250_SHARE_IRQ is not set # CONFIG_SERIAL_8250_DETECT_IRQ is not set CONFIG_SERIAL_8250_RSA=y # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set CONFIG_IPMI_HANDLER=y # CONFIG_IPMI_PANIC_EVENT is not set # CONFIG_IPMI_DEVICE_INTERFACE is not set # CONFIG_IPMI_SI is not set # CONFIG_IPMI_WATCHDOG is not set # CONFIG_IPMI_POWEROFF is not set # CONFIG_HW_RANDOM is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set # CONFIG_GEN_RTC is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_SONYPI is not set # # PCMCIA character devices # # CONFIG_SYNCLINK_CS is not set CONFIG_CARDMAN_4000=y # CONFIG_CARDMAN_4040 is not set CONFIG_IPWIRELESS=y # CONFIG_MWAVE is not set # CONFIG_PC8736x_GPIO is not set CONFIG_NSC_GPIO=y CONFIG_CS5535_GPIO=y CONFIG_RAW_DRIVER=y CONFIG_MAX_RAW_DEVS=256 CONFIG_HPET=y CONFIG_HPET_RTC_IRQ=y # CONFIG_HPET_MMAP is not set CONFIG_HANGCHECK_TIMER=y CONFIG_TCG_TPM=y CONFIG_TCG_TIS=y CONFIG_TCG_NSC=y CONFIG_TCG_ATMEL=y # CONFIG_TCG_INFINEON is not set # CONFIG_TELCLOCK is not set CONFIG_DEVPORT=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_CHARDEV is not set # # I2C Algorithms # CONFIG_I2C_ALGOBIT=y CONFIG_I2C_ALGOPCF=y CONFIG_I2C_ALGOPCA=y # # I2C Hardware Bus support # # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set CONFIG_I2C_AMD756=y # CONFIG_I2C_AMD756_S4882 is not set # CONFIG_I2C_AMD8111 is not set CONFIG_I2C_I801=y CONFIG_I2C_I810=y CONFIG_I2C_PIIX4=y # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_OCORES is not set CONFIG_I2C_PARPORT_LIGHT=y CONFIG_I2C_PROSAVAGE=y # CONFIG_I2C_SAVAGE4 is not set CONFIG_I2C_SIMTEC=y CONFIG_SCx200_ACB=y # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set CONFIG_I2C_SIS96X=y # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set # CONFIG_I2C_VIA is not set CONFIG_I2C_VIAPRO=y CONFIG_I2C_VOODOO3=y # # Miscellaneous I2C Chip support # CONFIG_DS1682=y CONFIG_SENSORS_EEPROM=y CONFIG_SENSORS_PCF8574=y CONFIG_PCF8575=y CONFIG_SENSORS_PCF8591=y CONFIG_TPS65010=y CONFIG_SENSORS_MAX6875=y # CONFIG_SENSORS_TSL2550 is not set CONFIG_I2C_DEBUG_CORE=y CONFIG_I2C_DEBUG_ALGO=y # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set # # SPI support # CONFIG_SPI=y CONFIG_SPI_MASTER=y # # SPI Master Controller Drivers # CONFIG_SPI_BITBANG=y # # SPI Protocol Masters # # CONFIG_SPI_AT25 is not set CONFIG_SPI_SPIDEV=y CONFIG_SPI_TLE62X0=y CONFIG_W1=y # # 1-wire Bus Masters # # CONFIG_W1_MASTER_MATROX is not set CONFIG_W1_MASTER_DS2490=y CONFIG_W1_MASTER_DS2482=y # # 1-wire Slaves # CONFIG_W1_SLAVE_THERM=y CONFIG_W1_SLAVE_SMEM=y # CONFIG_W1_SLAVE_DS2433 is not set CONFIG_W1_SLAVE_DS2760=y CONFIG_POWER_SUPPLY=y CONFIG_POWER_SUPPLY_DEBUG=y # CONFIG_PDA_POWER is not set CONFIG_BATTERY_DS2760=y # CONFIG_HWMON is not set # CONFIG_THERMAL is not set CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set # # Watchdog Device Drivers # # CONFIG_SOFT_WATCHDOG is not set CONFIG_ACQUIRE_WDT=y CONFIG_ADVANTECH_WDT=y CONFIG_ALIM1535_WDT=y # CONFIG_ALIM7101_WDT is not set # CONFIG_SC520_WDT is not set # CONFIG_EUROTECH_WDT is not set # CONFIG_IB700_WDT is not set # CONFIG_IBMASR is not set # CONFIG_WAFER_WDT is not set # CONFIG_I6300ESB_WDT is not set # CONFIG_ITCO_WDT is not set CONFIG_IT8712F_WDT=y # CONFIG_HP_WATCHDOG is not set # CONFIG_SC1200_WDT is not set CONFIG_PC87413_WDT=y # CONFIG_60XX_WDT is not set CONFIG_SBC8360_WDT=y CONFIG_SBC7240_WDT=y CONFIG_CPU5_WDT=y # CONFIG_SMSC37B787_WDT is not set # CONFIG_W83627HF_WDT is not set CONFIG_W83697HF_WDT=y CONFIG_W83877F_WDT=y CONFIG_W83977F_WDT=y # CONFIG_MACHZ_WDT is not set CONFIG_SBC_EPX_C3_WATCHDOG=y # # PCI-based Watchdog Cards # # CONFIG_PCIPCWATCHDOG is not set # CONFIG_WDTPCI is not set # # USB-based Watchdog Cards # # CONFIG_USBPCWATCHDOG is not set # # Sonics Silicon Backplane # CONFIG_SSB_POSSIBLE=y CONFIG_SSB=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y # CONFIG_SSB_B43_PCI_BRIDGE is not set CONFIG_SSB_PCMCIAHOST_POSSIBLE=y # CONFIG_SSB_PCMCIAHOST is not set CONFIG_SSB_DEBUG=y CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y # CONFIG_SSB_DRIVER_PCICORE is not set # # Multifunction device drivers # CONFIG_MFD_SM501=y # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # CONFIG_DVB_CORE is not set CONFIG_DAB=y CONFIG_USB_DABUSB=y # # Graphics support # CONFIG_AGP=y # CONFIG_AGP_ALI is not set # CONFIG_AGP_ATI is not set # CONFIG_AGP_AMD is not set CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=y # CONFIG_AGP_NVIDIA is not set CONFIG_AGP_SIS=y # CONFIG_AGP_SWORKS is not set CONFIG_AGP_VIA=y # CONFIG_AGP_EFFICEON is not set CONFIG_DRM=y CONFIG_DRM_TDFX=y # CONFIG_DRM_R128 is not set CONFIG_DRM_RADEON=y CONFIG_DRM_I810=y CONFIG_DRM_I830=y # CONFIG_DRM_I915 is not set # CONFIG_DRM_MGA is not set # CONFIG_DRM_SIS is not set # CONFIG_DRM_VIA is not set CONFIG_DRM_SAVAGE=y CONFIG_VGASTATE=y CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y CONFIG_FB_SVGALIB=y # CONFIG_FB_MACMODES is not set CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y # # Frame buffer hardware drivers # # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set CONFIG_FB_CYBER2000=y # CONFIG_FB_ARC is not set # CONFIG_FB_ASILIANT is not set CONFIG_FB_IMSTT=y # CONFIG_FB_VGA16 is not set # CONFIG_FB_VESA is not set # CONFIG_FB_EFI is not set CONFIG_FB_HECUBA=y CONFIG_FB_HGA=y # CONFIG_FB_HGA_ACCEL is not set # CONFIG_FB_S1D13XXX is not set CONFIG_FB_NVIDIA=y # CONFIG_FB_NVIDIA_I2C is not set # CONFIG_FB_NVIDIA_DEBUG is not set # CONFIG_FB_NVIDIA_BACKLIGHT is not set CONFIG_FB_RIVA=y CONFIG_FB_RIVA_I2C=y CONFIG_FB_RIVA_DEBUG=y CONFIG_FB_RIVA_BACKLIGHT=y CONFIG_FB_I810=y CONFIG_FB_I810_GTF=y # CONFIG_FB_I810_I2C is not set # CONFIG_FB_LE80578 is not set # CONFIG_FB_INTEL is not set # CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set CONFIG_FB_ATY128=y CONFIG_FB_ATY128_BACKLIGHT=y CONFIG_FB_ATY=y CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_GENERIC_LCD=y CONFIG_FB_ATY_GX=y # CONFIG_FB_ATY_BACKLIGHT is not set CONFIG_FB_S3=y # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set # CONFIG_FB_NEOMAGIC is not set CONFIG_FB_KYRO=y CONFIG_FB_3DFX=y # CONFIG_FB_3DFX_ACCEL is not set CONFIG_FB_VOODOO1=y CONFIG_FB_VT8623=y # CONFIG_FB_CYBLA is not set # CONFIG_FB_TRIDENT is not set # CONFIG_FB_ARK is not set CONFIG_FB_PM3=y # CONFIG_FB_GEODE is not set # CONFIG_FB_SM501 is not set # CONFIG_FB_VIRTUAL is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_CORGI=y # CONFIG_BACKLIGHT_PROGEAR is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set # CONFIG_VIDEO_SELECT is not set CONFIG_DUMMY_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE is not set CONFIG_LOGO=y CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y # CONFIG_LOGO_LINUX_CLUT224 is not set # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # # CONFIG_SND is not set # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set # # USB Input Devices # CONFIG_USB_HID=y # CONFIG_USB_HIDINPUT_POWERBOOK is not set CONFIG_HID_FF=y # CONFIG_HID_PID is not set # CONFIG_LOGITECH_FF is not set CONFIG_PANTHERLORD_FF=y CONFIG_THRUSTMASTER_FF=y CONFIG_ZEROPLUS_FF=y CONFIG_USB_HIDDEV=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICE_CLASS=y CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_PERSIST is not set # CONFIG_USB_OTG is not set # # USB Host Controller Drivers # CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_ROOT_HUB_TT is not set CONFIG_USB_EHCI_TT_NEWSCHED=y # CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_SSB=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y CONFIG_USB_SL811_HCD=y # CONFIG_USB_SL811_CS is not set # CONFIG_USB_R8A66597_HCD is not set # # USB Device Class drivers # CONFIG_USB_ACM=y # CONFIG_USB_PRINTER is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # # # may also be needed; see USB_STORAGE Help for more information # # CONFIG_USB_STORAGE is not set # CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set CONFIG_USB_MICROTEK=y # CONFIG_USB_MON is not set # # USB port drivers # # CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers # CONFIG_USB_EMI62=y CONFIG_USB_EMI26=y # CONFIG_USB_ADUTUX is not set CONFIG_USB_AUERSWALD=y CONFIG_USB_RIO500=y # CONFIG_USB_LEGOTOWER is not set CONFIG_USB_LCD=y CONFIG_USB_BERRY_CHARGE=y # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_PHIDGET is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set CONFIG_USB_APPLEDISPLAY=y # CONFIG_USB_SISUSBVGA is not set CONFIG_USB_LD=y # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set CONFIG_USB_TEST=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_DEBUG_FILES=y CONFIG_USB_GADGET_DEBUG_FS=y CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_AMD5536UDC is not set # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set # CONFIG_USB_GADGET_M66592 is not set CONFIG_USB_GADGET_GOKU=y CONFIG_USB_GOKU=y # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set # CONFIG_USB_GADGET_S3C2410 is not set # CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set # CONFIG_USB_GADGET_DUALSPEED is not set CONFIG_USB_ZERO=y # CONFIG_USB_ETH is not set # CONFIG_USB_GADGETFS is not set # CONFIG_USB_FILE_STORAGE is not set # CONFIG_USB_G_SERIAL is not set # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_PRINTER is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y # # LED drivers # # CONFIG_LEDS_CLEVO_MAIL is not set # # LED Triggers # # CONFIG_LEDS_TRIGGERS is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC=y # # Reporting subsystems # # CONFIG_EDAC_DEBUG is not set # CONFIG_EDAC_MM_EDAC is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set # # RTC interfaces # CONFIG_RTC_INTF_SYSFS=y # CONFIG_RTC_INTF_PROC is not set # CONFIG_RTC_INTF_DEV is not set # CONFIG_RTC_DRV_TEST is not set # # I2C RTC drivers # # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set CONFIG_RTC_DRV_DS1672=y # CONFIG_RTC_DRV_MAX6900 is not set # CONFIG_RTC_DRV_RS5C372 is not set CONFIG_RTC_DRV_ISL1208=y # CONFIG_RTC_DRV_X1205 is not set CONFIG_RTC_DRV_PCF8563=y CONFIG_RTC_DRV_PCF8583=y # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_S35390A is not set # # SPI RTC drivers # # CONFIG_RTC_DRV_MAX6902 is not set # CONFIG_RTC_DRV_R9701 is not set CONFIG_RTC_DRV_RS5C348=y # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=y # CONFIG_RTC_DRV_DS1511 is not set CONFIG_RTC_DRV_DS1553=y CONFIG_RTC_DRV_DS1742=y CONFIG_RTC_DRV_STK17TA8=y CONFIG_RTC_DRV_M48T86=y CONFIG_RTC_DRV_M48T59=y # CONFIG_RTC_DRV_V3020 is not set # # on-CPU RTC drivers # # # Userspace I/O # # CONFIG_UIO is not set # # Firmware Drivers # CONFIG_EDD=y CONFIG_DELL_RBU=y CONFIG_DCDBAS=y CONFIG_DMIID=y # # File systems # CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y # CONFIG_EXT2_FS_POSIX_ACL is not set CONFIG_EXT2_FS_SECURITY=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y CONFIG_JBD_DEBUG=y CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_DNOTIFY is not set CONFIG_INOTIFY=y # CONFIG_INOTIFY_USER is not set CONFIG_QUOTA=y # CONFIG_QUOTA_NETLINK_INTERFACE is not set CONFIG_PRINT_QUOTA_WARNING=y CONFIG_QFMT_V1=y CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=y # CONFIG_AUTOFS4_FS is not set CONFIG_FUSE_FS=y # # CD-ROM/DVD Filesystems # # CONFIG_ISO9660_FS is not set CONFIG_UDF_FS=y CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y # CONFIG_MSDOS_FS is not set CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=y # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set # CONFIG_ECRYPT_FS is not set CONFIG_HFS_FS=y # CONFIG_HFSPLUS_FS is not set CONFIG_BEFS_FS=y # CONFIG_BEFS_DEBUG is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set CONFIG_CRAMFS=y CONFIG_VXFS_FS=y CONFIG_MINIX_FS=y # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set CONFIG_ROMFS_FS=y CONFIG_SYSV_FS=y # CONFIG_UFS_FS is not set # CONFIG_NETWORK_FILESYSTEMS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set CONFIG_ATARI_PARTITION=y # CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y CONFIG_BSD_DISKLABEL=y # CONFIG_MINIX_SUBPARTITION is not set CONFIG_SOLARIS_X86_PARTITION=y # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set CONFIG_SGI_PARTITION=y CONFIG_ULTRIX_PARTITION=y CONFIG_SUN_PARTITION=y # CONFIG_KARMA_PARTITION is not set # CONFIG_EFI_PARTITION is not set # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_737=y CONFIG_NLS_CODEPAGE_775=y CONFIG_NLS_CODEPAGE_850=y CONFIG_NLS_CODEPAGE_852=y CONFIG_NLS_CODEPAGE_855=y # CONFIG_NLS_CODEPAGE_857 is not set CONFIG_NLS_CODEPAGE_860=y # CONFIG_NLS_CODEPAGE_861 is not set CONFIG_NLS_CODEPAGE_862=y CONFIG_NLS_CODEPAGE_863=y # CONFIG_NLS_CODEPAGE_864 is not set CONFIG_NLS_CODEPAGE_865=y CONFIG_NLS_CODEPAGE_866=y # CONFIG_NLS_CODEPAGE_869 is not set CONFIG_NLS_CODEPAGE_936=y CONFIG_NLS_CODEPAGE_950=y CONFIG_NLS_CODEPAGE_932=y # CONFIG_NLS_CODEPAGE_949 is not set CONFIG_NLS_CODEPAGE_874=y CONFIG_NLS_ISO8859_8=y CONFIG_NLS_CODEPAGE_1250=y # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set # CONFIG_NLS_ISO8859_1 is not set CONFIG_NLS_ISO8859_2=y CONFIG_NLS_ISO8859_3=y CONFIG_NLS_ISO8859_4=y CONFIG_NLS_ISO8859_5=y CONFIG_NLS_ISO8859_6=y CONFIG_NLS_ISO8859_7=y CONFIG_NLS_ISO8859_9=y # CONFIG_NLS_ISO8859_13 is not set CONFIG_NLS_ISO8859_14=y # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set CONFIG_NLS_KOI8_U=y CONFIG_NLS_UTF8=y # CONFIG_DLM is not set # # Kernel hacking # CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_PRINTK_TIME=y CONFIG_ENABLE_WARN_DEPRECATED=y # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_MAGIC_SYSRQ=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_LATENCYTOP is not set CONFIG_PROVIDE_OHCI1394_DMA_INIT=y # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y CONFIG_NONPROMISC_DEVMEM=y CONFIG_EARLY_PRINTK=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 CONFIG_IO_DELAY_TYPE_NONE=3 # CONFIG_IO_DELAY_0X80 is not set CONFIG_IO_DELAY_0XED=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=1 CONFIG_OPTIMIZE_INLINING=y # # Security options # CONFIG_KEYS=y CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y # CONFIG_SECURITY_NETWORK is not set CONFIG_SECURITY_CAPABILITIES=y CONFIG_SECURITY_FILE_CAPABILITIES=y # CONFIG_SECURITY_ROOTPLUG is not set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_SEQIV=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y # CONFIG_CRYPTO_XCBC is not set CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y # CONFIG_CRYPTO_WP512 is not set CONFIG_CRYPTO_TGR192=y CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_PCBC=y CONFIG_CRYPTO_LRW=y # CONFIG_CRYPTO_XTS is not set CONFIG_CRYPTO_CTR=y # CONFIG_CRYPTO_GCM is not set CONFIG_CRYPTO_CCM=y # CONFIG_CRYPTO_CRYPTD is not set CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_FCRYPT=y CONFIG_CRYPTO_BLOWFISH=y CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_TWOFISH_COMMON=y CONFIG_CRYPTO_TWOFISH_586=y CONFIG_CRYPTO_SERPENT=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_586 is not set # CONFIG_CRYPTO_CAST5 is not set CONFIG_CRYPTO_CAST6=y # CONFIG_CRYPTO_TEA is not set CONFIG_CRYPTO_ARC4=y # CONFIG_CRYPTO_KHAZAD is not set CONFIG_CRYPTO_ANUBIS=y # CONFIG_CRYPTO_SEED is not set CONFIG_CRYPTO_SALSA20=y # CONFIG_CRYPTO_SALSA20_586 is not set CONFIG_CRYPTO_DEFLATE=y # CONFIG_CRYPTO_MICHAEL_MIC is not set CONFIG_CRYPTO_CRC32C=y # CONFIG_CRYPTO_CAMELLIA is not set CONFIG_CRYPTO_AUTHENC=y # CONFIG_CRYPTO_LZO is not set # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y CONFIG_KVM_INTEL=y # CONFIG_KVM_AMD is not set CONFIG_VIRTIO=y CONFIG_VIRTIO_RING=y # CONFIG_VIRTIO_PCI is not set CONFIG_VIRTIO_BALLOON=y # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y [-- Attachment #3: Type: text/plain, Size: 278 bytes --] ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace [-- Attachment #4: Type: text/plain, Size: 158 bytes --] _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-26 12:49 ` Ingo Molnar @ 2008-03-26 13:04 ` Ingo Molnar 2008-03-26 13:16 ` Glauber Costa 0 siblings, 1 reply; 31+ messages in thread From: Ingo Molnar @ 2008-03-26 13:04 UTC (permalink / raw) To: Glauber Costa Cc: linux-kernel, akpm, glommer, tglx, kvm-devel, avi, amit.shah * Ingo Molnar <mingo@elte.hu> wrote: > what i came up is the prototype 32-bit fix below - this works on > 32-bit but breaks 64-bit because we pass in physical addresses instead > of virtual direct addresses. > > i'll fix the 64-bit side but that means materially touching all the > dma_mapping_ops instantiations materially on the 64-bit side - not > really something we wanted to do :-/ the full fix ended up being the one below. It's not that bad - and gart_64.c looks even a bit cleaner. Still, it needs careful review. Ingo ---------------> Subject: x86: dma-ops on highmem fix From: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/x86/kernel/pci-base_32.c | 4 ++-- arch/x86/kernel/pci-calgary_64.c | 3 ++- arch/x86/kernel/pci-dma_64.c | 2 +- arch/x86/kernel/pci-gart_64.c | 15 +++++++-------- arch/x86/kernel/pci-nommu_64.c | 4 ++-- arch/x86/kernel/pci-swiotlb_64.c | 9 ++++++++- include/asm-x86/dma-mapping.h | 10 ++++++---- 7 files changed, 28 insertions(+), 19 deletions(-) Index: linux-x86.q/arch/x86/kernel/pci-base_32.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-base_32.c +++ linux-x86.q/arch/x86/kernel/pci-base_32.c @@ -4,12 +4,12 @@ #include <linux/dma-mapping.h> #include <asm/dma-mapping.h> -static dma_addr_t pci32_map_single(struct device *dev, void *ptr, +static dma_addr_t pci32_map_single(struct device *dev, phys_addr_t ptr, size_t size, int direction) { WARN_ON(size == 0); flush_write_buffers(); - return virt_to_phys(ptr); + return ptr; } static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, Index: linux-x86.q/arch/x86/kernel/pci-calgary_64.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-calgary_64.c +++ linux-x86.q/arch/x86/kernel/pci-calgary_64.c @@ -470,10 +470,11 @@ error: return 0; } -static dma_addr_t calgary_map_single(struct device *dev, void *vaddr, +static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr, size_t size, int direction) { dma_addr_t dma_handle = bad_dma_address; + void *vaddr = phys_to_virt(paddr); unsigned long uaddr; unsigned int npages; struct iommu_table *tbl = find_iommu_table(dev); Index: linux-x86.q/arch/x86/kernel/pci-dma_64.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-dma_64.c +++ linux-x86.q/arch/x86/kernel/pci-dma_64.c @@ -141,7 +141,7 @@ dma_alloc_coherent(struct device *dev, s } if (dma_ops->map_simple) { - *dma_handle = dma_ops->map_simple(dev, memory, + *dma_handle = dma_ops->map_simple(dev, virt_to_phys(memory), size, PCI_DMA_BIDIRECTIONAL); if (*dma_handle != bad_dma_address) Index: linux-x86.q/arch/x86/kernel/pci-gart_64.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-gart_64.c +++ linux-x86.q/arch/x86/kernel/pci-gart_64.c @@ -264,9 +264,9 @@ static dma_addr_t dma_map_area(struct de } static dma_addr_t -gart_map_simple(struct device *dev, char *buf, size_t size, int dir) +gart_map_simple(struct device *dev, phys_addr_t paddr, size_t size, int dir) { - dma_addr_t map = dma_map_area(dev, virt_to_bus(buf), size, dir); + dma_addr_t map = dma_map_area(dev, paddr, size, dir); flush_gart(); @@ -275,18 +275,17 @@ gart_map_simple(struct device *dev, char /* Map a single area into the IOMMU */ static dma_addr_t -gart_map_single(struct device *dev, void *addr, size_t size, int dir) +gart_map_single(struct device *dev, phys_addr_t paddr, size_t size, int dir) { - unsigned long phys_mem, bus; + unsigned long bus; if (!dev) dev = &fallback_dev; - phys_mem = virt_to_phys(addr); - if (!need_iommu(dev, phys_mem, size)) - return phys_mem; + if (!need_iommu(dev, paddr, size)) + return paddr; - bus = gart_map_simple(dev, addr, size, dir); + bus = gart_map_simple(dev, paddr, size, dir); return bus; } Index: linux-x86.q/arch/x86/kernel/pci-nommu_64.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-nommu_64.c +++ linux-x86.q/arch/x86/kernel/pci-nommu_64.c @@ -26,10 +26,10 @@ check_addr(char *name, struct device *hw } static dma_addr_t -nommu_map_single(struct device *hwdev, void *ptr, size_t size, +nommu_map_single(struct device *hwdev, phys_addr_t paddr, size_t size, int direction) { - dma_addr_t bus = virt_to_bus(ptr); + dma_addr_t bus = paddr; if (!check_addr("map_single", hwdev, bus, size)) return bad_dma_address; return bus; Index: linux-x86.q/arch/x86/kernel/pci-swiotlb_64.c =================================================================== --- linux-x86.q.orig/arch/x86/kernel/pci-swiotlb_64.c +++ linux-x86.q/arch/x86/kernel/pci-swiotlb_64.c @@ -11,11 +11,18 @@ int swiotlb __read_mostly; +static dma_addr_t +swiotlb_map_single_phys(struct device *hwdev, phys_addr_t paddr, size_t size, + int direction) +{ + return swiotlb_map_single(hwdev, phys_to_virt(paddr), size, direction); +} + const struct dma_mapping_ops swiotlb_dma_ops = { .mapping_error = swiotlb_dma_mapping_error, .alloc_coherent = swiotlb_alloc_coherent, .free_coherent = swiotlb_free_coherent, - .map_single = swiotlb_map_single, + .map_single = swiotlb_map_single_phys, .unmap_single = swiotlb_unmap_single, .sync_single_for_cpu = swiotlb_sync_single_for_cpu, .sync_single_for_device = swiotlb_sync_single_for_device, Index: linux-x86.q/include/asm-x86/dma-mapping.h =================================================================== --- linux-x86.q.orig/include/asm-x86/dma-mapping.h +++ linux-x86.q/include/asm-x86/dma-mapping.h @@ -16,10 +16,10 @@ struct dma_mapping_ops { dma_addr_t *dma_handle, gfp_t gfp); void (*free_coherent)(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); - dma_addr_t (*map_single)(struct device *hwdev, void *ptr, + dma_addr_t (*map_single)(struct device *hwdev, phys_addr_t ptr, size_t size, int direction); /* like map_single, but doesn't check the device mask */ - dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, + dma_addr_t (*map_simple)(struct device *hwdev, phys_addr_t ptr, size_t size, int direction); void (*unmap_single)(struct device *dev, dma_addr_t addr, size_t size, int direction); @@ -73,7 +73,7 @@ dma_map_single(struct device *hwdev, voi int direction) { BUG_ON(!valid_dma_direction(direction)); - return dma_ops->map_single(hwdev, ptr, size, direction); + return dma_ops->map_single(hwdev, virt_to_phys(ptr), size, direction); } static inline void @@ -174,7 +174,9 @@ static inline dma_addr_t dma_map_page(st size_t offset, size_t size, int direction) { - return dma_map_single(dev, page_address(page)+offset, size, direction); + BUG_ON(!valid_dma_direction(direction)); + return dma_ops->map_single(dev, page_to_phys(page)+offset, + size, direction); } static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-26 13:04 ` Ingo Molnar @ 2008-03-26 13:16 ` Glauber Costa 0 siblings, 0 replies; 31+ messages in thread From: Glauber Costa @ 2008-03-26 13:16 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel, linux-kernel, avi, akpm Ingo Molnar wrote: > * Ingo Molnar <mingo@elte.hu> wrote: > >> what i came up is the prototype 32-bit fix below - this works on >> 32-bit but breaks 64-bit because we pass in physical addresses instead >> of virtual direct addresses. >> >> i'll fix the 64-bit side but that means materially touching all the >> dma_mapping_ops instantiations materially on the 64-bit side - not >> really something we wanted to do :-/ > > the full fix ended up being the one below. It's not that bad - and > gart_64.c looks even a bit cleaner. Still, it needs careful review. > > Ingo > > ---------------> > Subject: x86: dma-ops on highmem fix > From: Ingo Molnar <mingo@elte.hu> > > Signed-off-by: Ingo Molnar <mingo@elte.hu> > --- > arch/x86/kernel/pci-base_32.c | 4 ++-- > arch/x86/kernel/pci-calgary_64.c | 3 ++- > arch/x86/kernel/pci-dma_64.c | 2 +- > arch/x86/kernel/pci-gart_64.c | 15 +++++++-------- > arch/x86/kernel/pci-nommu_64.c | 4 ++-- > arch/x86/kernel/pci-swiotlb_64.c | 9 ++++++++- > include/asm-x86/dma-mapping.h | 10 ++++++---- > 7 files changed, 28 insertions(+), 19 deletions(-) > > Index: linux-x86.q/arch/x86/kernel/pci-base_32.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-base_32.c > +++ linux-x86.q/arch/x86/kernel/pci-base_32.c > @@ -4,12 +4,12 @@ > #include <linux/dma-mapping.h> > #include <asm/dma-mapping.h> > > -static dma_addr_t pci32_map_single(struct device *dev, void *ptr, > +static dma_addr_t pci32_map_single(struct device *dev, phys_addr_t ptr, > size_t size, int direction) > { > WARN_ON(size == 0); > flush_write_buffers(); > - return virt_to_phys(ptr); > + return ptr; > } > > static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, > Index: linux-x86.q/arch/x86/kernel/pci-calgary_64.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-calgary_64.c > +++ linux-x86.q/arch/x86/kernel/pci-calgary_64.c > @@ -470,10 +470,11 @@ error: > return 0; > } > > -static dma_addr_t calgary_map_single(struct device *dev, void *vaddr, > +static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr, > size_t size, int direction) > { > dma_addr_t dma_handle = bad_dma_address; > + void *vaddr = phys_to_virt(paddr); > unsigned long uaddr; > unsigned int npages; > struct iommu_table *tbl = find_iommu_table(dev); > Index: linux-x86.q/arch/x86/kernel/pci-dma_64.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-dma_64.c > +++ linux-x86.q/arch/x86/kernel/pci-dma_64.c > @@ -141,7 +141,7 @@ dma_alloc_coherent(struct device *dev, s > } > > if (dma_ops->map_simple) { > - *dma_handle = dma_ops->map_simple(dev, memory, > + *dma_handle = dma_ops->map_simple(dev, virt_to_phys(memory), > size, > PCI_DMA_BIDIRECTIONAL); > if (*dma_handle != bad_dma_address) > Index: linux-x86.q/arch/x86/kernel/pci-gart_64.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-gart_64.c > +++ linux-x86.q/arch/x86/kernel/pci-gart_64.c > @@ -264,9 +264,9 @@ static dma_addr_t dma_map_area(struct de > } > > static dma_addr_t > -gart_map_simple(struct device *dev, char *buf, size_t size, int dir) > +gart_map_simple(struct device *dev, phys_addr_t paddr, size_t size, int dir) > { > - dma_addr_t map = dma_map_area(dev, virt_to_bus(buf), size, dir); > + dma_addr_t map = dma_map_area(dev, paddr, size, dir); > > flush_gart(); > > @@ -275,18 +275,17 @@ gart_map_simple(struct device *dev, char > > /* Map a single area into the IOMMU */ > static dma_addr_t > -gart_map_single(struct device *dev, void *addr, size_t size, int dir) > +gart_map_single(struct device *dev, phys_addr_t paddr, size_t size, int dir) > { > - unsigned long phys_mem, bus; > + unsigned long bus; > > if (!dev) > dev = &fallback_dev; > > - phys_mem = virt_to_phys(addr); > - if (!need_iommu(dev, phys_mem, size)) > - return phys_mem; > + if (!need_iommu(dev, paddr, size)) > + return paddr; > > - bus = gart_map_simple(dev, addr, size, dir); > + bus = gart_map_simple(dev, paddr, size, dir); > > return bus; > } > Index: linux-x86.q/arch/x86/kernel/pci-nommu_64.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-nommu_64.c > +++ linux-x86.q/arch/x86/kernel/pci-nommu_64.c > @@ -26,10 +26,10 @@ check_addr(char *name, struct device *hw > } > > static dma_addr_t > -nommu_map_single(struct device *hwdev, void *ptr, size_t size, > +nommu_map_single(struct device *hwdev, phys_addr_t paddr, size_t size, > int direction) > { > - dma_addr_t bus = virt_to_bus(ptr); > + dma_addr_t bus = paddr; > if (!check_addr("map_single", hwdev, bus, size)) > return bad_dma_address; > return bus; > Index: linux-x86.q/arch/x86/kernel/pci-swiotlb_64.c > =================================================================== > --- linux-x86.q.orig/arch/x86/kernel/pci-swiotlb_64.c > +++ linux-x86.q/arch/x86/kernel/pci-swiotlb_64.c > @@ -11,11 +11,18 @@ > > int swiotlb __read_mostly; > > +static dma_addr_t > +swiotlb_map_single_phys(struct device *hwdev, phys_addr_t paddr, size_t size, > + int direction) > +{ > + return swiotlb_map_single(hwdev, phys_to_virt(paddr), size, direction); > +} > + > const struct dma_mapping_ops swiotlb_dma_ops = { > .mapping_error = swiotlb_dma_mapping_error, > .alloc_coherent = swiotlb_alloc_coherent, > .free_coherent = swiotlb_free_coherent, > - .map_single = swiotlb_map_single, > + .map_single = swiotlb_map_single_phys, > .unmap_single = swiotlb_unmap_single, > .sync_single_for_cpu = swiotlb_sync_single_for_cpu, > .sync_single_for_device = swiotlb_sync_single_for_device, > Index: linux-x86.q/include/asm-x86/dma-mapping.h > =================================================================== > --- linux-x86.q.orig/include/asm-x86/dma-mapping.h > +++ linux-x86.q/include/asm-x86/dma-mapping.h > @@ -16,10 +16,10 @@ struct dma_mapping_ops { > dma_addr_t *dma_handle, gfp_t gfp); > void (*free_coherent)(struct device *dev, size_t size, > void *vaddr, dma_addr_t dma_handle); > - dma_addr_t (*map_single)(struct device *hwdev, void *ptr, > + dma_addr_t (*map_single)(struct device *hwdev, phys_addr_t ptr, > size_t size, int direction); > /* like map_single, but doesn't check the device mask */ > - dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, > + dma_addr_t (*map_simple)(struct device *hwdev, phys_addr_t ptr, > size_t size, int direction); > void (*unmap_single)(struct device *dev, dma_addr_t addr, > size_t size, int direction); > @@ -73,7 +73,7 @@ dma_map_single(struct device *hwdev, voi > int direction) > { > BUG_ON(!valid_dma_direction(direction)); > - return dma_ops->map_single(hwdev, ptr, size, direction); > + return dma_ops->map_single(hwdev, virt_to_phys(ptr), size, direction); > } > > static inline void > @@ -174,7 +174,9 @@ static inline dma_addr_t dma_map_page(st > size_t offset, size_t size, > int direction) > { > - return dma_map_single(dev, page_address(page)+offset, size, direction); > + BUG_ON(!valid_dma_direction(direction)); > + return dma_ops->map_single(dev, page_to_phys(page)+offset, > + size, direction); > } > > static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, It looks all good to me. I'll give a shot in my systems to see if it goes okay. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-25 21:36 [PATCH 0/20] dma_ops for i386 Glauber Costa 2008-03-25 21:36 ` [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h Glauber Costa 2008-03-26 7:06 ` [PATCH 0/20] dma_ops for i386 Ingo Molnar @ 2008-03-26 10:01 ` Avi Kivity 2008-03-26 12:03 ` Glauber Costa 2008-03-27 9:49 ` Amit Shah 3 siblings, 1 reply; 31+ messages in thread From: Avi Kivity @ 2008-03-26 10:01 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, akpm Glauber Costa wrote: > Hello, > > Here there is a series of 20 patches that lays the foundations for > using dma_ops in i386 in the very same way x86_64, as well as many other > architectures already do. > > The functions themselves for i386 are placed in a pci-base_32.c, but just > a few among them are actually implemented. Most were no-ops anyway. > > I see the headers are unified, but the .c files are duplicated. I presume unifying the implementation is deferred to later patches? > The motivation for that is the ongoing work for pci-passthrough in KVM. > So ingo, avi, what do you think it's the best way to handle these patches through? > x86.git. -- Do not meddle in the internals of kernels, for they are subtle and quick to panic. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-26 10:01 ` Avi Kivity @ 2008-03-26 12:03 ` Glauber Costa 0 siblings, 0 replies; 31+ messages in thread From: Glauber Costa @ 2008-03-26 12:03 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel, linux-kernel, akpm Avi Kivity wrote: > Glauber Costa wrote: >> Hello, >> >> Here there is a series of 20 patches that lays the foundations for >> using dma_ops in i386 in the very same way x86_64, as well as many other >> architectures already do. >> >> The functions themselves for i386 are placed in a pci-base_32.c, but just >> a few among them are actually implemented. Most were no-ops anyway. >> >> > > I see the headers are unified, but the .c files are duplicated. I > presume unifying the implementation is deferred to later patches? presume correctly. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH 0/20] dma_ops for i386 2008-03-25 21:36 [PATCH 0/20] dma_ops for i386 Glauber Costa ` (2 preceding siblings ...) 2008-03-26 10:01 ` Avi Kivity @ 2008-03-27 9:49 ` Amit Shah 3 siblings, 0 replies; 31+ messages in thread From: Amit Shah @ 2008-03-27 9:49 UTC (permalink / raw) To: Glauber Costa; +Cc: kvm-devel, linux-kernel, Avi Kivity, akpm * On Wednesday 26 March 2008 03:06:19 Glauber Costa wrote: > Hello, > > Here there is a series of 20 patches that lays the foundations for > using dma_ops in i386 in the very same way x86_64, as well as many other > architectures already do. Thanks; Please also see Stephen Tweedie's tree at http://git.et.redhat.com/?p=linux-2.6-dom0-pvops.git;a=summary I guess your work would be overlapped anyway, but just to make sure there's no double work. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2008-03-27 11:54 UTC | newest] Thread overview: 31+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-03-25 21:36 [PATCH 0/20] dma_ops for i386 Glauber Costa 2008-03-25 21:36 ` [PATCH 01/20] x86: move dma_ops struct definition to dma-mapping.h Glauber Costa 2008-03-25 21:36 ` [PATCH 02/20] x86: implement dma_map_single through dma_ops Glauber Costa 2008-03-25 21:36 ` [PATCH 03/20] x86: move dma_unmap_single to common header Glauber Costa 2008-03-25 21:36 ` [PATCH 04/20] x86: move dma_map_sg " Glauber Costa 2008-03-25 21:36 ` [PATCH 05/20] x86: move dma_unmap_sg " Glauber Costa 2008-03-25 21:36 ` [PATCH 06/20] x86: move dma_sync_single_for_cpu " Glauber Costa 2008-03-25 21:36 ` [PATCH 07/20] x86: move dma_sync_single_for_device " Glauber Costa 2008-03-25 21:36 ` [PATCH 08/20] x86: move dma_sync_single_range_for_cpu " Glauber Costa 2008-03-25 21:36 ` [PATCH 09/20] x86: move dma_sync_single_range_for_device " Glauber Costa 2008-03-25 21:36 ` [PATCH 10/20] x86: move dma_sync_sg_for_cpu " Glauber Costa 2008-03-25 21:36 ` [PATCH 11/20] x86: move dma_sync_sg_for_device " Glauber Costa 2008-03-25 21:36 ` [PATCH 12/20] x86: move alloc and free coherent " Glauber Costa 2008-03-25 21:36 ` [PATCH 13/20] x86: move dma_map_page and dma_unmap_page " Glauber Costa 2008-03-25 21:36 ` [PATCH 14/20] x86: move dma_cache_sync " Glauber Costa 2008-03-25 21:36 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Glauber Costa 2008-03-25 21:36 ` [PATCH 16/20] x86: align to clflush size Glauber Costa 2008-03-25 21:36 ` [PATCH 17/20] x86: provide a bad_dma_address symbol for i386 Glauber Costa 2008-03-25 21:36 ` [PATCH 18/20] x86: unify dma_mapping_error Glauber Costa 2008-03-25 21:36 ` [PATCH 19/20] x86: move ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY to dma-mapping.h Glauber Costa 2008-03-25 21:36 ` [PATCH 20/20] x86: delete the arch-specific dma-mapping headers Glauber Costa 2008-03-26 7:09 ` [PATCH 16/20] x86: align to clflush size Ingo Molnar 2008-03-27 11:03 ` [PATCH 15/20] x86: move dma_supported and dma_set_mask to pci-dma_32.c Mark McLoughlin 2008-03-27 11:54 ` Ingo Molnar 2008-03-26 7:06 ` [PATCH 0/20] dma_ops for i386 Ingo Molnar 2008-03-26 12:49 ` Ingo Molnar 2008-03-26 13:04 ` Ingo Molnar 2008-03-26 13:16 ` Glauber Costa 2008-03-26 10:01 ` Avi Kivity 2008-03-26 12:03 ` Glauber Costa 2008-03-27 9:49 ` Amit Shah
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox