diff options
author | David Barksdale <amatus@amatus.name> | 2014-08-13 18:11:53 -0500 |
---|---|---|
committer | David Barksdale <amatus@amatus.name> | 2014-08-13 18:11:53 -0500 |
commit | 3918522a523adc3f001cf9c5da327d8fb383c26e (patch) | |
tree | 424b4a37d021e6a5fd02c3abbf9b6a054e469208 | |
parent | f05c100b6a7051106229cda5a845e94e36e71b17 (diff) |
gpl-source-mybooklive-020202.zipgpl-source-mybooklive-020202.zipgpl-source-mybooklive-02.03.01-028.zipgpl-source-mybooklive-02.03.01-024.zip
82 files changed, 1049 insertions, 7 deletions
diff --git a/Documentation/io-mapping.txt b/Documentation/io-mapping.txt new file mode 100644 index 00000000000..473e43b2d58 --- /dev/null +++ b/Documentation/io-mapping.txt @@ -0,0 +1,82 @@ +The io_mapping functions in linux/io-mapping.h provide an abstraction for +efficiently mapping small regions of an I/O device to the CPU. The initial +usage is to support the large graphics aperture on 32-bit processors where +ioremap_wc cannot be used to statically map the entire aperture to the CPU +as it would consume too much of the kernel address space. + +A mapping object is created during driver initialization using + + struct io_mapping *io_mapping_create_wc(unsigned long base, + unsigned long size) + + 'base' is the bus address of the region to be made + mappable, while 'size' indicates how large a mapping region to + enable. Both are in bytes. + + This _wc variant provides a mapping which may only be used + with the io_mapping_map_atomic_wc or io_mapping_map_wc. + +With this mapping object, individual pages can be mapped either atomically +or not, depending on the necessary scheduling environment. Of course, atomic +maps are more efficient: + + void *io_mapping_map_atomic_wc(struct io_mapping *mapping, + unsigned long offset) + + 'offset' is the offset within the defined mapping region. + Accessing addresses beyond the region specified in the + creation function yields undefined results. Using an offset + which is not page aligned yields an undefined result. The + return value points to a single page in CPU address space. + + This _wc variant returns a write-combining map to the + page and may only be used with mappings created by + io_mapping_create_wc + + Note that the task may not sleep while holding this page + mapped. + + void io_mapping_unmap_atomic(void *vaddr) + + 'vaddr' must be the the value returned by the last + io_mapping_map_atomic_wc call. This unmaps the specified + page and allows the task to sleep once again. + +If you need to sleep while holding the lock, you can use the non-atomic +variant, although they may be significantly slower. + + void *io_mapping_map_wc(struct io_mapping *mapping, + unsigned long offset) + + This works like io_mapping_map_atomic_wc except it allows + the task to sleep while holding the page mapped. + + void io_mapping_unmap(void *vaddr) + + This works like io_mapping_unmap_atomic, except it is used + for pages mapped with io_mapping_map_wc. + +At driver close time, the io_mapping object must be freed: + + void io_mapping_free(struct io_mapping *mapping) + +Current Implementation: + +The initial implementation of these functions uses existing mapping +mechanisms and so provides only an abstraction layer and no new +functionality. + +On 64-bit processors, io_mapping_create_wc calls ioremap_wc for the whole +range, creating a permanent kernel-visible mapping to the resource. The +map_atomic and map functions add the requested offset to the base of the +virtual address returned by ioremap_wc. + +On 32-bit processors with HIGHMEM defined, io_mapping_map_atomic_wc uses +kmap_atomic_pfn to map the specified page in an atomic fashion; +kmap_atomic_pfn isn't really supposed to be used with device pages, but it +provides an efficient mapping for this usage. + +On 32-bit processors without HIGHMEM defined, io_mapping_map_atomic_wc and +io_mapping_map_wc both use ioremap_wc, a terribly inefficient function which +performs an IPI to inform all processors about the new mapping. This results +in a significant performance penalty. diff --git a/arch/ia64/scripts/check-gas b/arch/ia64/scripts/check-gas index 2499e0b2243..2499e0b2243 100644..100755 --- a/arch/ia64/scripts/check-gas +++ b/arch/ia64/scripts/check-gas diff --git a/arch/ia64/scripts/toolchain-flags b/arch/ia64/scripts/toolchain-flags index 3f0c2adacb7..3f0c2adacb7 100644..100755 --- a/arch/ia64/scripts/toolchain-flags +++ b/arch/ia64/scripts/toolchain-flags diff --git a/arch/powerpc/boot/dts/apollo3g.dts b/arch/powerpc/boot/dts/apollo3g.dts index ffe03c281e6..ffe03c281e6 100644..100755 --- a/arch/powerpc/boot/dts/apollo3g.dts +++ b/arch/powerpc/boot/dts/apollo3g.dts diff --git a/arch/powerpc/boot/dts/beech.dts b/arch/powerpc/boot/dts/beech.dts index 341fb2cf0af..341fb2cf0af 100644..100755 --- a/arch/powerpc/boot/dts/beech.dts +++ b/arch/powerpc/boot/dts/beech.dts diff --git a/arch/powerpc/boot/dts/bluestone.dts b/arch/powerpc/boot/dts/bluestone.dts index 3a9804b3a82..3a9804b3a82 100644..100755 --- a/arch/powerpc/boot/dts/bluestone.dts +++ b/arch/powerpc/boot/dts/bluestone.dts diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index ac9e9a58b2b..ac9e9a58b2b 100644..100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper diff --git a/arch/powerpc/configs/44x/beech_defconfig b/arch/powerpc/configs/44x/beech_defconfig index 0a5d46ae512..0a5d46ae512 100644..100755 --- a/arch/powerpc/configs/44x/beech_defconfig +++ b/arch/powerpc/configs/44x/beech_defconfig diff --git a/arch/powerpc/configs/44x/beech_sata_defconfig b/arch/powerpc/configs/44x/beech_sata_defconfig index 4dab1f9e068..4dab1f9e068 100644..100755 --- a/arch/powerpc/configs/44x/beech_sata_defconfig +++ b/arch/powerpc/configs/44x/beech_sata_defconfig diff --git a/arch/powerpc/configs/44x/bluestone_defconfig b/arch/powerpc/configs/44x/bluestone_defconfig index 218a3c20c0a..218a3c20c0a 100644..100755 --- a/arch/powerpc/configs/44x/bluestone_defconfig +++ b/arch/powerpc/configs/44x/bluestone_defconfig diff --git a/arch/powerpc/include/asm/ppc460ex_plb_adma.h b/arch/powerpc/include/asm/ppc460ex_plb_adma.h index 965786e1d4b..965786e1d4b 100644..100755 --- a/arch/powerpc/include/asm/ppc460ex_plb_adma.h +++ b/arch/powerpc/include/asm/ppc460ex_plb_adma.h diff --git a/arch/powerpc/include/ppc460ex_plb_adma.h b/arch/powerpc/include/ppc460ex_plb_adma.h index 4ff4fd2d2a7..4ff4fd2d2a7 100644..100755 --- a/arch/powerpc/include/ppc460ex_plb_adma.h +++ b/arch/powerpc/include/ppc460ex_plb_adma.h diff --git a/arch/powerpc/platforms/44x/bluestone-usb.c b/arch/powerpc/platforms/44x/bluestone-usb.c index 06a8dcc5c96..06a8dcc5c96 100644..100755 --- a/arch/powerpc/platforms/44x/bluestone-usb.c +++ b/arch/powerpc/platforms/44x/bluestone-usb.c diff --git a/arch/powerpc/relocs_check.pl b/arch/powerpc/relocs_check.pl index d2571096c3e..d2571096c3e 100644..100755 --- a/arch/powerpc/relocs_check.pl +++ b/arch/powerpc/relocs_check.pl diff --git a/arch/powerpc/sysdev/ppc4xx_msi.c b/arch/powerpc/sysdev/ppc4xx_msi.c index 8bec6fff4ce..8bec6fff4ce 100644..100755 --- a/arch/powerpc/sysdev/ppc4xx_msi.c +++ b/arch/powerpc/sysdev/ppc4xx_msi.c diff --git a/arch/powerpc/sysdev/ppc4xx_msi.h b/arch/powerpc/sysdev/ppc4xx_msi.h index 64b2f335068..64b2f335068 100644..100755 --- a/arch/powerpc/sysdev/ppc4xx_msi.h +++ b/arch/powerpc/sysdev/ppc4xx_msi.h diff --git a/build.sh b/build.sh index a277eb23411..a277eb23411 100644..100755 --- a/build.sh +++ b/build.sh diff --git a/drivers/ata/sata_dwc_pmp.c b/drivers/ata/sata_dwc_pmp.c index df3b490f86e..df3b490f86e 100644..100755 --- a/drivers/ata/sata_dwc_pmp.c +++ b/drivers/ata/sata_dwc_pmp.c diff --git a/drivers/dma/ppc460ex_4chan_dma.c b/drivers/dma/ppc460ex_4chan_dma.c index cb2888d5213..cb2888d5213 100644..100755 --- a/drivers/dma/ppc460ex_4chan_dma.c +++ b/drivers/dma/ppc460ex_4chan_dma.c diff --git a/drivers/dma/ppc460ex_4chan_dma.h b/drivers/dma/ppc460ex_4chan_dma.h index c9448f34de4..c9448f34de4 100644..100755 --- a/drivers/dma/ppc460ex_4chan_dma.h +++ b/drivers/dma/ppc460ex_4chan_dma.h diff --git a/drivers/dma/ppc460ex_4chan_sgdma.c b/drivers/dma/ppc460ex_4chan_sgdma.c index fb26dd76ce7..fb26dd76ce7 100644..100755 --- a/drivers/dma/ppc460ex_4chan_sgdma.c +++ b/drivers/dma/ppc460ex_4chan_sgdma.c diff --git a/drivers/scp/Kconfig b/drivers/scp/Kconfig index b44c6d556cb..b44c6d556cb 100644..100755 --- a/drivers/scp/Kconfig +++ b/drivers/scp/Kconfig diff --git a/drivers/scp/Makefile b/drivers/scp/Makefile index 8fa43d08906..8fa43d08906 100644..100755 --- a/drivers/scp/Makefile +++ b/drivers/scp/Makefile diff --git a/drivers/scp/scp-dev.c b/drivers/scp/scp-dev.c index b8f286c0342..b8f286c0342 100644..100755 --- a/drivers/scp/scp-dev.c +++ b/drivers/scp/scp-dev.c diff --git a/drivers/scp/scp-dev.h b/drivers/scp/scp-dev.h index 4e7c385a596..4e7c385a596 100644..100755 --- a/drivers/scp/scp-dev.h +++ b/drivers/scp/scp-dev.h diff --git a/drivers/scp/spi_eeprom.c b/drivers/scp/spi_eeprom.c index 47c83a4679d..47c83a4679d 100644..100755 --- a/drivers/scp/spi_eeprom.c +++ b/drivers/scp/spi_eeprom.c diff --git a/fs/splice.c b/fs/splice.c index 5a21493e9e8..0d810e86f6c 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -2599,22 +2599,20 @@ static long do_splice_2(int fd_in, struct file *in, loff_t __user *off_in, /** handle error status */ if( ret <= 0 ) { -#ifdef DEBUG_SPLICE printk( KERN_ERR "%s:%s:%d\n" "sock_splice_read read error %ld.\n", __FILE__, __FUNCTION__, __LINE__, ret ); -#endif + /** fail on specific errors */ if ( ret == 0 || ! ignore_splice_error ( ret ) ) { -#ifdef DEBUG_SPLICE printk( KERN_ERR "%s:%s:%d\n" "returning read error %ld " "after reading %d out of %d bytes.\n", __FILE__, __FUNCTION__, __LINE__, ret, spliced_len, len ); -#endif + release_splice_pipebufs_special(pipe); goto out; } diff --git a/include/linux/netfilter/xt_CONNMARK.h b/include/linux/netfilter/xt_CONNMARK.h new file mode 100644 index 00000000000..0a854586675 --- /dev/null +++ b/include/linux/netfilter/xt_CONNMARK.h @@ -0,0 +1,26 @@ +#ifndef _XT_CONNMARK_H_target +#define _XT_CONNMARK_H_target + +#include <linux/types.h> + +/* Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com> + * by Henrik Nordstrom <hno@marasystems.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +enum { + XT_CONNMARK_SET = 0, + XT_CONNMARK_SAVE, + XT_CONNMARK_RESTORE +}; + +struct xt_connmark_tginfo1 { + __u32 ctmark, ctmask, nfmask; + __u8 mode; +}; + +#endif /*_XT_CONNMARK_H_target*/ diff --git a/include/linux/netfilter/xt_DSCP.h b/include/linux/netfilter/xt_DSCP.h new file mode 100644 index 00000000000..648e0b3bed2 --- /dev/null +++ b/include/linux/netfilter/xt_DSCP.h @@ -0,0 +1,26 @@ +/* x_tables module for setting the IPv4/IPv6 DSCP field + * + * (C) 2002 Harald Welte <laforge@gnumonks.org> + * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com> + * This software is distributed under GNU GPL v2, 1991 + * + * See RFC2474 for a description of the DSCP field within the IP Header. + * + * xt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp +*/ +#ifndef _XT_DSCP_TARGET_H +#define _X |