## Automatically generated incremental diff ## From: linux-2.6.18-rc6 ## To: linux-2.6.18-rc7 ## Robot: $Id: make-incremental-diff,v 1.12 2004/01/06 07:19:36 hpa Exp $ diff -urN linux-2.6.18-rc6/Makefile linux-2.6.18-rc7/Makefile --- linux-2.6.18-rc6/Makefile 2006-09-13 03:15:58.594413471 +0000 +++ linux-2.6.18-rc7/Makefile 2006-09-13 03:16:03.730968018 +0000 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 18 -EXTRAVERSION = -rc6 +EXTRAVERSION = -rc7 NAME=Crazed Snow-Weasel # *DOCUMENTATION* diff -urN linux-2.6.18-rc6/arch/arm/mach-ixp4xx/nslu2-pci.c linux-2.6.18-rc7/arch/arm/mach-ixp4xx/nslu2-pci.c --- linux-2.6.18-rc6/arch/arm/mach-ixp4xx/nslu2-pci.c 2006-09-13 03:15:58.646419086 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-ixp4xx/nslu2-pci.c 2006-09-13 03:16:03.786974065 +0000 @@ -17,6 +17,7 @@ #include #include +#include #include #include diff -urN linux-2.6.18-rc6/arch/arm/mach-ixp4xx/nslu2-power.c linux-2.6.18-rc7/arch/arm/mach-ixp4xx/nslu2-power.c --- linux-2.6.18-rc6/arch/arm/mach-ixp4xx/nslu2-power.c 2006-09-13 03:15:58.646419086 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-ixp4xx/nslu2-power.c 2006-09-13 03:16:03.786974065 +0000 @@ -19,6 +19,7 @@ #include #include +#include #include #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/Makefile linux-2.6.18-rc7/arch/arm/mach-s3c2410/Makefile --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/Makefile 2006-09-13 03:15:58.670421677 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/Makefile 2006-09-13 03:16:03.810976656 +0000 @@ -28,6 +28,7 @@ # S3C2412 support obj-$(CONFIG_CPU_S3C2412) += s3c2412.o +obj-$(CONFIG_CPU_S3C2412) += s3c2412-irq.o obj-$(CONFIG_CPU_S3C2412) += s3c2412-clock.o # diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/cpu.h linux-2.6.18-rc7/arch/arm/mach-s3c2410/cpu.h --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/cpu.h 2006-09-13 03:15:58.670421677 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/cpu.h 2006-09-13 03:16:03.814977088 +0000 @@ -8,16 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Modifications: - * 24-Aug-2004 BJD Start of generic S3C24XX support - * 18-Oct-2004 BJD Moved board struct into this file - * 04-Jan-2005 BJD New uart initialisation - * 10-Jan-2005 BJD Moved generic init here, specific to cpu headers - * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call - * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT - * 14-Mar-2005 BJD Updated for __iomem - * 15-Jan-2006 LCVR Updated S3C2410_PA_##x to new S3C24XX_PA_##x macro */ /* todo - fix when rmk changes iodescs to use `void __iomem *` */ diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/devs.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/devs.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/devs.c 2006-09-13 03:15:58.670421677 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/devs.c 2006-09-13 03:16:03.814977088 +0000 @@ -1,22 +1,14 @@ /* linux/arch/arm/mach-s3c2410/devs.c * * Copyright (c) 2004 Simtec Electronics - * Ben Dooks + * Ben Dooks * - * Base S3C2410 platform device definitions + * Base S3C24XX platform device definitions * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Modifications: - * 15-Jan-2006 LCVR Using S3C24XX_PA_##x macro for common S3C24XX devices - * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} - * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv - * 29-Aug-2004 BJD Added timers 0 through 3 - * 29-Aug-2004 BJD Changed index of devices we only have one of to -1 - * 21-Aug-2004 BJD Added IRQ_TICK to RTC resources - * 18-Aug-2004 BJD Created initial version */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/irq.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/irq.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/irq.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/irq.c 2006-09-13 03:16:03.814977088 +0000 @@ -86,7 +86,7 @@ unsigned long s3c_irqwake_eintallow = 0x0000fff0L; unsigned long s3c_irqwake_eintmask = 0xffffffffL; -static int +int s3c_irq_wake(unsigned int irqno, unsigned int state) { unsigned long irqbit = 1 << (irqno - IRQ_EINT0); @@ -260,7 +260,7 @@ s3c_irq_unmask((irqno <= (IRQ_EINT7 - EXTINT_OFF)) ? IRQ_EINT4t7 : IRQ_EINT8t23); } -static int +int s3c_irqext_type(unsigned int irq, unsigned int type) { void __iomem *extint_reg; diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/irq.h linux-2.6.18-rc7/arch/arm/mach-s3c2410/irq.h --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/irq.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/irq.h 2006-09-13 03:16:03.814977088 +0000 @@ -97,3 +97,8 @@ __raw_writel(parentmask, S3C2410_INTPND); } } + +/* exported for use in arch/arm/mach-s3c2410 */ + +extern int s3c_irq_wake(unsigned int irqno, unsigned int state); +extern int s3c_irqext_type(unsigned int irq, unsigned int type); diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-bast.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-bast.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-bast.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-bast.c 2006-09-13 03:16:03.814977088 +0000 @@ -8,31 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Modifications: - * 14-Sep-2004 BJD USB power control - * 20-Aug-2004 BJD Added s3c2410_board struct - * 18-Aug-2004 BJD Added platform devices from default set - * 16-May-2003 BJD Created initial version - * 16-Aug-2003 BJD Fixed header files and copyright, added URL - * 05-Sep-2003 BJD Moved to v2.6 kernel - * 06-Jan-2003 BJD Updates for - * 18-Jan-2003 BJD Added serial port configuration - * 05-Oct-2004 BJD Power management code - * 04-Nov-2004 BJD Updated serial port clocks - * 04-Jan-2005 BJD New uart init call - * 10-Jan-2005 BJD Removed include of s3c2410.h - * 14-Jan-2005 BJD Add support for muitlple NAND devices - * 03-Mar-2005 BJD Ensured that bast-cpld.h is included - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 14-Mar-2005 BJD Updated for __iomem changes - * 22-Jun-2005 BJD Added DM9000 platform information - * 28-Jun-2005 BJD Moved pm functionality out to common code - * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s - * 25-Jul-2005 BJD Removed ASIX static mappings - * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus - * 20-Sep-2005 BJD Added static to non-exported items - * 26-Oct-2005 BJD Added FB platform data */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-h1940.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-h1940.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-h1940.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-h1940.c 2006-09-13 03:16:03.814977088 +0000 @@ -9,23 +9,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Modifications: - * 16-May-2003 BJD Created initial version - * 16-Aug-2003 BJD Fixed header files and copyright, added URL - * 05-Sep-2003 BJD Moved to v2.6 kernel - * 06-Jan-2003 BJD Updates for - * 18-Jan-2003 BJD Added serial port configuration - * 17-Feb-2003 BJD Copied to mach-ipaq.c - * 21-Aug-2004 BJD Added struct s3c2410_board - * 04-Sep-2004 BJD Changed uart init, renamed ipaq_ -> h1940_ - * 18-Oct-2004 BJD Updated new board structure name - * 04-Nov-2004 BJD Change for new serial clock - * 04-Jan-2005 BJD Updated uart init call - * 10-Jan-2005 BJD Removed include of s3c2410.h - * 14-Jan-2005 BJD Added clock init - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 20-Sep-2005 BJD Added static to non-exported items - * 26-Oct-2005 BJD Changed name of fb init call */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-rx3715.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-rx3715.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-rx3715.c 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-rx3715.c 2006-09-13 03:16:03.818977520 +0000 @@ -9,15 +9,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Modifications: - * 16-Sep-2004 BJD Copied from mach-h1940.c - * 25-Oct-2004 BJD Updates for 2.6.10-rc1 - * 10-Jan-2005 BJD Removed include of s3c2410.h s3c2440.h - * 14-Jan-2005 BJD Added new clock init - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 14-Mar-2005 BJD Fixed __iomem warnings - * 20-Sep-2005 BJD Added static to non-exported items - * 31-Oct-2005 BJD Added LCD setup for framebuffer */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-smdk2410.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-smdk2410.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-smdk2410.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-smdk2410.c 2006-09-13 03:16:03.818977520 +0000 @@ -27,10 +27,6 @@ * derived from linux/arch/arm/mach-s3c2410/mach-bast.c, written by * Ben Dooks * - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 20-Sep-2005 BJD Added static to non-exported items - * 01-Apr-2006 BJD Moved init code to common smdk - * ***********************************************************************/ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-smdk2413.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-smdk2413.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-smdk2413.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-smdk2413.c 2006-09-13 03:16:03.818977520 +0000 @@ -112,7 +112,20 @@ smdk_machine_init(); } -MACHINE_START(S3C2413, "SMDK2413") +MACHINE_START(S3C2413, "S3C2413") + /* Maintainer: Ben Dooks */ + .phys_io = S3C2410_PA_UART, + .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, + .boot_params = S3C2410_SDRAM_PA + 0x100, + + .fixup = smdk2413_fixup, + .init_irq = s3c24xx_init_irq, + .map_io = smdk2413_map_io, + .init_machine = smdk2413_machine_init, + .timer = &s3c24xx_timer, +MACHINE_END + +MACHINE_START(SMDK2413, "SMDK2413") /* Maintainer: Ben Dooks */ .phys_io = S3C2410_PA_UART, .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-vr1000.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-vr1000.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/mach-vr1000.c 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/mach-vr1000.c 2006-09-13 03:16:03.818977520 +0000 @@ -10,25 +10,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Modifications: - * 14-Sep-2004 BJD USB Power control - * 04-Sep-2004 BJD Added new uart init, and io init - * 21-Aug-2004 BJD Added struct s3c2410_board - * 06-Aug-2004 BJD Fixed call to time initialisation - * 05-Apr-2004 BJD Copied to make mach-vr1000.c - * 18-Oct-2004 BJD Updated board struct - * 04-Nov-2004 BJD Clock and serial configuration update - * - * 04-Jan-2005 BJD Updated uart init call - * 10-Jan-2005 BJD Removed include of s3c2410.h - * 14-Jan-2005 BJD Added clock init - * 15-Jan-2005 BJD Add serial port device definition - * 20-Jan-2005 BJD Use UPF_IOREMAP for ports - * 10-Feb-2005 BJD Added power-off capability - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 14-Mar-2006 BJD void __iomem fixes - * 22-Jun-2006 BJD Added DM9000 platform information - * 20-Sep-2005 BJD Added static to non-exported items */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2400-gpio.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2400-gpio.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2400-gpio.c 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2400-gpio.c 2006-09-13 03:16:03.818977520 +0000 @@ -17,10 +17,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Changelog - * 15-Jan-2006 LCVR Splitted from gpio.c, adding support for the S3C2400 - */ +*/ #include #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2410.h linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2410.h --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2410.h 2006-09-13 03:15:58.674422109 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2410.h 2006-09-13 03:16:03.818977520 +0000 @@ -9,14 +9,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * Modifications: - * 18-Aug-2004 BJD Created initial version - * 20-Aug-2004 BJD Added s3c2410_board struct - * 04-Sep-2004 BJD Added s3c2410_init_uarts() call - * 17-Oct-2004 BJD Moved board out to cpu - * 04-Jan-2005 BJD Changed uart init - * 10-Jan-2005 BJD Removed timer to cpu.h, moved 2410 specific bits here - * 14-Jan-2005 BJD Added s3c2410_init_clocks call */ #ifdef CONFIG_CPU_S3C2410 diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2412-irq.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2412-irq.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2412-irq.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2412-irq.c 2006-09-13 03:16:03.818977520 +0000 @@ -0,0 +1,130 @@ +/* linux/arch/arm/mach-s3c2412/s3c2412-irq.c + * + * Copyright (c) 2006 Simtec Electronics + * Ben Dooks + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * +*/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include "cpu.h" +#include "irq.h" + +/* the s3c2412 changes the behaviour of IRQ_EINT0 through IRQ_EINT3 by + * having them turn up in both the INT* and the EINT* registers. Whilst + * both show the status, they both now need to be acked when the IRQs + * go off. +*/ + +static void +s3c2412_irq_mask(unsigned int irqno) +{ + unsigned long bitval = 1UL << (irqno - IRQ_EINT0); + unsigned long mask; + + mask = __raw_readl(S3C2410_INTMSK); + __raw_writel(mask | bitval, S3C2410_INTMSK); + + mask = __raw_readl(S3C2412_EINTMASK); + __raw_writel(mask | bitval, S3C2412_EINTMASK); +} + +static inline void +s3c2412_irq_ack(unsigned int irqno) +{ + unsigned long bitval = 1UL << (irqno - IRQ_EINT0); + + __raw_writel(bitval, S3C2412_EINTPEND); + __raw_writel(bitval, S3C2410_SRCPND); + __raw_writel(bitval, S3C2410_INTPND); +} + +static inline void +s3c2412_irq_maskack(unsigned int irqno) +{ + unsigned long bitval = 1UL << (irqno - IRQ_EINT0); + unsigned long mask; + + mask = __raw_readl(S3C2410_INTMSK); + __raw_writel(mask|bitval, S3C2410_INTMSK); + + mask = __raw_readl(S3C2412_EINTMASK); + __raw_writel(mask | bitval, S3C2412_EINTMASK); + + __raw_writel(bitval, S3C2412_EINTPEND); + __raw_writel(bitval, S3C2410_SRCPND); + __raw_writel(bitval, S3C2410_INTPND); +} + +static void +s3c2412_irq_unmask(unsigned int irqno) +{ + unsigned long bitval = 1UL << (irqno - IRQ_EINT0); + unsigned long mask; + + mask = __raw_readl(S3C2412_EINTMASK); + __raw_writel(mask & ~bitval, S3C2412_EINTMASK); + + mask = __raw_readl(S3C2410_INTMSK); + __raw_writel(mask & ~bitval, S3C2410_INTMSK); +} + +static struct irqchip s3c2412_irq_eint0t4 = { + .ack = s3c2412_irq_ack, + .mask = s3c2412_irq_mask, + .unmask = s3c2412_irq_unmask, + .set_wake = s3c_irq_wake, + .set_type = s3c_irqext_type, +}; + +static int s3c2412_irq_add(struct sys_device *sysdev) +{ + unsigned int irqno; + + for (irqno = IRQ_EINT0; irqno <= IRQ_EINT3; irqno++) { + set_irq_chip(irqno, &s3c2412_irq_eint0t4); + set_irq_handler(irqno, do_edge_IRQ); + set_irq_flags(irqno, IRQF_VALID); + } + + return 0; +} + +static struct sysdev_driver s3c2412_irq_driver = { + .add = s3c2412_irq_add, +}; + +static int s3c2412_irq_init(void) +{ + return sysdev_driver_register(&s3c2412_sysclass, &s3c2412_irq_driver); +} + +arch_initcall(s3c2412_irq_init); diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2440-irq.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2440-irq.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c2440-irq.c 2006-09-13 03:15:58.678422541 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c2440-irq.c 2006-09-13 03:16:03.822977952 +0000 @@ -17,9 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Changelog: - * 25-Jul-2005 BJD Split from irq.c - * */ #include diff -urN linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c244x-irq.c linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c244x-irq.c --- linux-2.6.18-rc6/arch/arm/mach-s3c2410/s3c244x-irq.c 2006-09-13 03:15:58.678422541 +0000 +++ linux-2.6.18-rc7/arch/arm/mach-s3c2410/s3c244x-irq.c 2006-09-13 03:16:03.822977952 +0000 @@ -17,9 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Changelog: - * 25-Jul-2005 BJD Split from irq.c - * */ #include @@ -122,21 +119,24 @@ return 0; } -static struct sysdev_driver s3c244x_irq_driver = { +static struct sysdev_driver s3c2440_irq_driver = { .add = s3c244x_irq_add, }; static int s3c2440_irq_init(void) { - return sysdev_driver_register(&s3c2440_sysclass, &s3c244x_irq_driver); + return sysdev_driver_register(&s3c2440_sysclass, &s3c2440_irq_driver); } arch_initcall(s3c2440_irq_init); +static struct sysdev_driver s3c2442_irq_driver = { + .add = s3c244x_irq_add, +}; static int s3c2442_irq_init(void) { - return sysdev_driver_register(&s3c2442_sysclass, &s3c244x_irq_driver); + return sysdev_driver_register(&s3c2442_sysclass, &s3c2442_irq_driver); } arch_initcall(s3c2442_irq_init); diff -urN linux-2.6.18-rc6/arch/arm/mm/proc-arm926.S linux-2.6.18-rc7/arch/arm/mm/proc-arm926.S --- linux-2.6.18-rc6/arch/arm/mm/proc-arm926.S 2006-09-13 03:15:58.690423837 +0000 +++ linux-2.6.18-rc7/arch/arm/mm/proc-arm926.S 2006-09-13 03:16:03.834979247 +0000 @@ -480,7 +480,7 @@ b __arm926_setup .long cpu_arch_name .long cpu_elf_name - .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA + .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_VFP|HWCAP_EDSP|HWCAP_JAVA .long cpu_arm926_name .long arm926_processor_functions .long v4wbi_tlb_fns diff -urN linux-2.6.18-rc6/arch/frv/Kconfig linux-2.6.18-rc7/arch/frv/Kconfig --- linux-2.6.18-rc6/arch/frv/Kconfig 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/frv/Kconfig 2006-09-13 03:16:03.862982271 +0000 @@ -29,6 +29,10 @@ bool default n +config GENERIC_TIME + bool + default y + config TIME_LOW_RES bool default y diff -urN linux-2.6.18-rc6/arch/frv/kernel/time.c linux-2.6.18-rc7/arch/frv/kernel/time.c --- linux-2.6.18-rc6/arch/frv/kernel/time.c 2006-09-13 03:15:58.722427292 +0000 +++ linux-2.6.18-rc7/arch/frv/kernel/time.c 2006-09-13 03:16:03.870983134 +0000 @@ -32,8 +32,6 @@ #define TICK_SIZE (tick_nsec / 1000) -extern unsigned long wall_jiffies; - unsigned long __nongprelbss __clkin_clock_speed_HZ; unsigned long __nongprelbss __ext_bus_clock_speed_HZ; unsigned long __nongprelbss __res_bus_clock_speed_HZ; @@ -145,85 +143,6 @@ } /* - * This version of gettimeofday has near microsecond resolution. - */ -void do_gettimeofday(struct timeval *tv) -{ - unsigned long seq; - unsigned long usec, sec; - unsigned long max_ntp_tick; - - do { - unsigned long lost; - - seq = read_seqbegin(&xtime_lock); - - usec = 0; - lost = jiffies - wall_jiffies; - - /* - * If time_adjust is negative then NTP is slowing the clock - * so make sure not to go into next possible interval. - * Better to lose some accuracy than have time go backwards.. - */ - if (unlikely(time_adjust < 0)) { - max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj; - usec = min(usec, max_ntp_tick); - - if (lost) - usec += lost * max_ntp_tick; - } - else if (unlikely(lost)) - usec += lost * (USEC_PER_SEC / HZ); - - sec = xtime.tv_sec; - usec += (xtime.tv_nsec / 1000); - } while (read_seqretry(&xtime_lock, seq)); - - while (usec >= 1000000) { - usec -= 1000000; - sec++; - } - - tv->tv_sec = sec; - tv->tv_usec = usec; -} - -EXPORT_SYMBOL(do_gettimeofday); - -int do_settimeofday(struct timespec *tv) -{ - time_t wtm_sec, sec = tv->tv_sec; - long wtm_nsec, nsec = tv->tv_nsec; - - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) - return -EINVAL; - - write_seqlock_irq(&xtime_lock); - /* - * This is revolting. We need to set "xtime" correctly. However, the - * value in this location is the value at the most recent update of - * wall time. Discover what correction gettimeofday() would have - * made, and then undo it! - */ - nsec -= 0 * NSEC_PER_USEC; - nsec -= (jiffies - wall_jiffies) * TICK_NSEC; - - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); - - set_normalized_timespec(&xtime, sec, nsec); - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); - - ntp_clear(); - write_sequnlock_irq(&xtime_lock); - clock_was_set(); - return 0; -} - -EXPORT_SYMBOL(do_settimeofday); - -/* * Scheduler clock - returns current time in nanosec units. */ unsigned long long sched_clock(void) diff -urN linux-2.6.18-rc6/arch/i386/kernel/Makefile linux-2.6.18-rc7/arch/i386/kernel/Makefile --- linux-2.6.18-rc6/arch/i386/kernel/Makefile 2006-09-13 03:15:58.730428156 +0000 +++ linux-2.6.18-rc7/arch/i386/kernel/Makefile 2006-09-13 03:16:03.882984430 +0000 @@ -39,7 +39,6 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_K8_NB) += k8.o -obj-$(CONFIG_AUDIT) += audit.o EXTRA_AFLAGS := -traditional diff -urN linux-2.6.18-rc6/arch/i386/kernel/audit.c linux-2.6.18-rc7/arch/i386/kernel/audit.c --- linux-2.6.18-rc6/arch/i386/kernel/audit.c 2006-09-13 03:15:58.734428587 +0000 +++ linux-2.6.18-rc7/arch/i386/kernel/audit.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -#include -#include -#include -#include - -static unsigned dir_class[] = { -#include -~0U -}; - -static unsigned chattr_class[] = { -#include -~0U -}; - -static int __init audit_classes_init(void) -{ - audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); - audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); - return 0; -} - -__initcall(audit_classes_init); diff -urN linux-2.6.18-rc6/arch/ia64/Kconfig linux-2.6.18-rc7/arch/ia64/Kconfig --- linux-2.6.18-rc6/arch/ia64/Kconfig 2006-09-13 03:15:58.766432043 +0000 +++ linux-2.6.18-rc7/arch/ia64/Kconfig 2006-09-13 03:16:03.918988317 +0000 @@ -75,6 +75,10 @@ depends on IA64_SGI_SN2 default y +config AUDIT_ARCH + bool + default y + choice prompt "System type" default IA64_GENERIC diff -urN linux-2.6.18-rc6/arch/ia64/ia32/audit.c linux-2.6.18-rc7/arch/ia64/ia32/audit.c --- linux-2.6.18-rc6/arch/ia64/ia32/audit.c 2006-09-13 03:15:58.770432474 +0000 +++ linux-2.6.18-rc7/arch/ia64/ia32/audit.c 2006-09-13 03:16:03.922988749 +0000 @@ -9,3 +9,29 @@ #include ~0U }; + +unsigned ia32_write_class[] = { +#include +~0U +}; + +unsigned ia32_read_class[] = { +#include +~0U +}; + +int ia32_classify_syscall(unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 1; + } +} diff -urN linux-2.6.18-rc6/arch/ia64/kernel/audit.c linux-2.6.18-rc7/arch/ia64/kernel/audit.c --- linux-2.6.18-rc6/arch/ia64/kernel/audit.c 2006-09-13 03:15:58.774432906 +0000 +++ linux-2.6.18-rc7/arch/ia64/kernel/audit.c 2006-09-13 03:16:03.926989181 +0000 @@ -8,19 +8,54 @@ ~0U }; +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + static unsigned chattr_class[] = { #include ~0U }; +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_IA32_SUPPORT + extern int ia32_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_I386) + return ia32_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_execve: + return 5; + default: + return 0; + } +} + static int __init audit_classes_init(void) { #ifdef CONFIG_IA32_SUPPORT extern __u32 ia32_dir_class[]; + extern __u32 ia32_write_class[]; + extern __u32 ia32_read_class[]; extern __u32 ia32_chattr_class[]; + audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); + audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); #endif + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); return 0; diff -urN linux-2.6.18-rc6/arch/ia64/kernel/entry.S linux-2.6.18-rc7/arch/ia64/kernel/entry.S --- linux-2.6.18-rc6/arch/ia64/kernel/entry.S 2006-09-13 03:15:58.774432906 +0000 +++ linux-2.6.18-rc7/arch/ia64/kernel/entry.S 2006-09-13 03:16:03.926989181 +0000 @@ -1605,8 +1605,8 @@ data8 sys_ni_syscall // 1295 reserved for ppoll data8 sys_unshare data8 sys_splice - data8 sys_set_robust_list - data8 sys_get_robust_list + data8 sys_ni_syscall // reserved for set_robust_list + data8 sys_ni_syscall // reserved for get_robust_list data8 sys_sync_file_range // 1300 data8 sys_tee data8 sys_vmsplice diff -urN linux-2.6.18-rc6/arch/ia64/kernel/head.S linux-2.6.18-rc7/arch/ia64/kernel/head.S --- linux-2.6.18-rc6/arch/ia64/kernel/head.S 2006-09-13 03:15:58.774432906 +0000 +++ linux-2.6.18-rc7/arch/ia64/kernel/head.S 2006-09-13 03:16:03.930989613 +0000 @@ -197,6 +197,11 @@ ;; srlz.i ;; + { + flushrs // must be first insn in group + srlz.i + } + ;; /* * Save the region registers, predicate before they get clobbered */ diff -urN linux-2.6.18-rc6/arch/ia64/kernel/perfmon.c linux-2.6.18-rc7/arch/ia64/kernel/perfmon.c --- linux-2.6.18-rc6/arch/ia64/kernel/perfmon.c 2006-09-13 03:15:58.782433770 +0000 +++ linux-2.6.18-rc7/arch/ia64/kernel/perfmon.c 2006-09-13 03:16:03.934990045 +0000 @@ -4936,13 +4936,15 @@ if (likely(ctx)) { DPRINT(("context unlocked\n")); UNPROTECT_CTX(ctx, flags); - fput(file); } /* copy argument back to user, if needed */ if (call_made && PFM_CMD_RW_ARG(cmd) && copy_to_user(arg, args_k, base_sz*count)) ret = -EFAULT; error_args: + if (file) + fput(file); + kfree(args_k); DPRINT(("cmd=%s ret=%ld\n", PFM_CMD_NAME(cmd), ret)); diff -urN linux-2.6.18-rc6/arch/ia64/kernel/sys_ia64.c linux-2.6.18-rc7/arch/ia64/kernel/sys_ia64.c --- linux-2.6.18-rc6/arch/ia64/kernel/sys_ia64.c 2006-09-13 03:15:58.782433770 +0000 +++ linux-2.6.18-rc7/arch/ia64/kernel/sys_ia64.c 2006-09-13 03:16:03.938990476 +0000 @@ -163,10 +163,25 @@ return retval; } +int ia64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags) +{ + unsigned long roff; + + /* + * Don't permit mappings into unmapped space, the virtual page table + * of a region, or across a region boundary. Note: RGN_MAP_LIMIT is + * equal to 2^n-PAGE_SIZE (for some integer n <= 61) and len > 0. + */ + roff = REGION_OFFSET(addr); + if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len))) + return -EINVAL; + return 0; +} + static inline unsigned long do_mmap2 (unsigned long addr, unsigned long len, int prot, int flags, int fd, unsigned long pgoff) { - unsigned long roff; struct file *file = NULL; flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); @@ -188,17 +203,6 @@ goto out; } - /* - * Don't permit mappings into unmapped space, the virtual page table of a region, - * or across a region boundary. Note: RGN_MAP_LIMIT is equal to 2^n-PAGE_SIZE - * (for some integer n <= 61) and len > 0. - */ - roff = REGION_OFFSET(addr); - if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len))) { - addr = -EINVAL; - goto out; - } - down_write(¤t->mm->mmap_sem); addr = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); up_write(¤t->mm->mmap_sem); diff -urN linux-2.6.18-rc6/arch/ia64/sn/kernel/setup.c linux-2.6.18-rc7/arch/ia64/sn/kernel/setup.c --- linux-2.6.18-rc6/arch/ia64/sn/kernel/setup.c 2006-09-13 03:15:58.790434634 +0000 +++ linux-2.6.18-rc7/arch/ia64/sn/kernel/setup.c 2006-09-13 03:16:03.946991340 +0000 @@ -565,7 +565,7 @@ * Also sets up a few fields in the nodepda. Also known as * platform_cpu_init() by the ia64 machvec code. */ -void __init sn_cpu_init(void) +void __cpuinit sn_cpu_init(void) { int cpuid; int cpuphyid; diff -urN linux-2.6.18-rc6/arch/powerpc/Kconfig linux-2.6.18-rc7/arch/powerpc/Kconfig --- linux-2.6.18-rc6/arch/powerpc/Kconfig 2006-09-13 03:15:58.938450614 +0000 +++ linux-2.6.18-rc7/arch/powerpc/Kconfig 2006-09-13 03:16:04.111009048 +0000 @@ -95,6 +95,10 @@ default y if PPC32 && SMP default n +config AUDIT_ARCH + bool + default y + config DEFAULT_UIMAGE bool help diff -urN linux-2.6.18-rc6/arch/powerpc/kernel/Makefile linux-2.6.18-rc7/arch/powerpc/kernel/Makefile --- linux-2.6.18-rc6/arch/powerpc/kernel/Makefile 2006-09-13 03:15:58.950451909 +0000 +++ linux-2.6.18-rc7/arch/powerpc/kernel/Makefile 2006-09-13 03:16:04.123010344 +0000 @@ -70,6 +70,8 @@ kexec-$(CONFIG_PPC64) := machine_kexec_64.o kexec-$(CONFIG_PPC32) := machine_kexec_32.o obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y) +obj-$(CONFIG_AUDIT) += audit.o +obj64-$(CONFIG_AUDIT) += compat_audit.o ifeq ($(CONFIG_PPC_ISERIES),y) $(obj)/head_64.o: $(obj)/lparmap.s diff -urN linux-2.6.18-rc6/arch/powerpc/kernel/audit.c linux-2.6.18-rc7/arch/powerpc/kernel/audit.c --- linux-2.6.18-rc6/arch/powerpc/kernel/audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/powerpc/kernel/audit.c 2006-09-13 03:16:04.127010775 +0000 @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +static unsigned dir_class[] = { +#include +~0U +}; + +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + +static unsigned chattr_class[] = { +#include +~0U +}; + +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_PPC64 + extern int ppc32_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_PPC) + return ppc32_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 0; + } +} + +static int __init audit_classes_init(void) +{ +#ifdef CONFIG_PPC64 + extern __u32 ppc32_dir_class[]; + extern __u32 ppc32_write_class[]; + extern __u32 ppc32_read_class[]; + extern __u32 ppc32_chattr_class[]; + audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class); + audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); + audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); +#endif + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); + audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); + return 0; +} + +__initcall(audit_classes_init); diff -urN linux-2.6.18-rc6/arch/powerpc/kernel/compat_audit.c linux-2.6.18-rc7/arch/powerpc/kernel/compat_audit.c --- linux-2.6.18-rc6/arch/powerpc/kernel/compat_audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/powerpc/kernel/compat_audit.c 2006-09-13 03:16:04.127010775 +0000 @@ -0,0 +1,38 @@ +#undef __powerpc64__ +#include + +unsigned ppc32_dir_class[] = { +#include +~0U +}; + +unsigned ppc32_chattr_class[] = { +#include +~0U +}; + +unsigned ppc32_write_class[] = { +#include +~0U +}; + +unsigned ppc32_read_class[] = { +#include +~0U +}; + +int ppc32_classify_syscall(unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 1; + } +} diff -urN linux-2.6.18-rc6/arch/s390/Kconfig linux-2.6.18-rc7/arch/s390/Kconfig --- linux-2.6.18-rc6/arch/s390/Kconfig 2006-09-13 03:15:59.066464434 +0000 +++ linux-2.6.18-rc7/arch/s390/Kconfig 2006-09-13 03:16:04.247023732 +0000 @@ -118,6 +118,10 @@ depends on COMPAT && SYSVIPC default y +config AUDIT_ARCH + bool + default y + comment "Code generation options" choice diff -urN linux-2.6.18-rc6/arch/s390/kernel/Makefile linux-2.6.18-rc7/arch/s390/kernel/Makefile --- linux-2.6.18-rc6/arch/s390/kernel/Makefile 2006-09-13 03:15:59.070464866 +0000 +++ linux-2.6.18-rc7/arch/s390/kernel/Makefile 2006-09-13 03:16:04.255024596 +0000 @@ -16,9 +16,11 @@ obj-$(CONFIG_MODULES) += s390_ksyms.o module.o obj-$(CONFIG_SMP) += smp.o +obj-$(CONFIG_AUDIT) += audit.o +compat-obj-$(CONFIG_AUDIT) += compat_audit.o obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ compat_wrapper.o compat_exec_domain.o \ - binfmt_elf32.o + binfmt_elf32.o $(compat-obj-y) obj-$(CONFIG_VIRT_TIMER) += vtime.o obj-$(CONFIG_STACKTRACE) += stacktrace.o diff -urN linux-2.6.18-rc6/arch/s390/kernel/audit.c linux-2.6.18-rc7/arch/s390/kernel/audit.c --- linux-2.6.18-rc6/arch/s390/kernel/audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/s390/kernel/audit.c 2006-09-13 03:16:04.255024596 +0000 @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +static unsigned dir_class[] = { +#include +~0U +}; + +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + +static unsigned chattr_class[] = { +#include +~0U +}; + +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_COMPAT + extern int s390_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_S390) + return s390_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 0; + } +} + +static int __init audit_classes_init(void) +{ +#ifdef CONFIG_COMPAT + extern __u32 s390_dir_class[]; + extern __u32 s390_write_class[]; + extern __u32 s390_read_class[]; + extern __u32 s390_chattr_class[]; + audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); + audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); + audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); +#endif + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); + audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); + return 0; +} + +__initcall(audit_classes_init); diff -urN linux-2.6.18-rc6/arch/s390/kernel/compat_audit.c linux-2.6.18-rc7/arch/s390/kernel/compat_audit.c --- linux-2.6.18-rc6/arch/s390/kernel/compat_audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/s390/kernel/compat_audit.c 2006-09-13 03:16:04.255024596 +0000 @@ -0,0 +1,38 @@ +#undef __s390x__ +#include + +unsigned s390_dir_class[] = { +#include +~0U +}; + +unsigned s390_chattr_class[] = { +#include +~0U +}; + +unsigned s390_write_class[] = { +#include +~0U +}; + +unsigned s390_read_class[] = { +#include +~0U +}; + +int s390_classify_syscall(unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 1; + } +} diff -urN linux-2.6.18-rc6/arch/sh64/Makefile linux-2.6.18-rc7/arch/sh64/Makefile --- linux-2.6.18-rc6/arch/sh64/Makefile 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/sh64/Makefile 2006-09-13 03:16:04.279027187 +0000 @@ -26,7 +26,6 @@ endif # No requirements for endianess support from AFLAGS, 'as' always run through gcc -AFLAGS += -m5 -isa=sh64 -traditional CFLAGS += $(cpu-y) LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_CACHED_MEMORY_OFFSET) \ diff -urN linux-2.6.18-rc6/arch/sh64/kernel/process.c linux-2.6.18-rc7/arch/sh64/kernel/process.c --- linux-2.6.18-rc6/arch/sh64/kernel/process.c 2006-09-13 03:15:59.102468321 +0000 +++ linux-2.6.18-rc7/arch/sh64/kernel/process.c 2006-09-13 03:16:04.283027619 +0000 @@ -355,6 +355,9 @@ enter_deep_standby(); } +void (*pm_power_off)(void) = machine_power_off; +EXPORT_SYMBOL(pm_power_off); + void show_regs(struct pt_regs * regs) { unsigned long long ah, al, bh, bl, ch, cl; diff -urN linux-2.6.18-rc6/arch/sh64/mach-cayman/setup.c linux-2.6.18-rc7/arch/sh64/mach-cayman/setup.c --- linux-2.6.18-rc6/arch/sh64/mach-cayman/setup.c 2006-09-13 03:15:59.102468321 +0000 +++ linux-2.6.18-rc7/arch/sh64/mach-cayman/setup.c 2006-09-13 03:16:04.283027619 +0000 @@ -112,8 +112,10 @@ }; struct resource kram_resources[] = { - { "Kernel code", 0, 0 }, /* These must be last in the array */ - { "Kernel data", 0, 0 } /* These must be last in the array */ + /* These must be last in the array */ + { .name = "Kernel code", .start = 0, .end = 0 }, + /* These must be last in the array */ + { .name = "Kernel data", .start = 0, .end = 0 } }; struct resource xram_resources[] = { diff -urN linux-2.6.18-rc6/arch/sh64/mm/ioremap.c linux-2.6.18-rc7/arch/sh64/mm/ioremap.c --- linux-2.6.18-rc6/arch/sh64/mm/ioremap.c 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/arch/sh64/mm/ioremap.c 2006-09-13 03:16:04.287028051 +0000 @@ -449,7 +449,9 @@ if (p + 32 >= e) /* Better than nothing */ break; if ((nm = r->name) == 0) nm = "???"; - p += sprintf(p, "%08lx-%08lx: %s\n", r->start, r->end, nm); + p += sprintf(p, "%08lx-%08lx: %s\n", + (unsigned long)r->start, + (unsigned long)r->end, nm); } return p-buf; diff -urN linux-2.6.18-rc6/arch/sparc/kernel/sys_sparc.c linux-2.6.18-rc7/arch/sparc/kernel/sys_sparc.c --- linux-2.6.18-rc6/arch/sparc/kernel/sys_sparc.c 2006-09-13 03:15:59.114469617 +0000 +++ linux-2.6.18-rc7/arch/sparc/kernel/sys_sparc.c 2006-09-13 03:16:04.295028915 +0000 @@ -219,6 +219,21 @@ return err; } +int sparc_mmap_check(unsigned long addr, unsigned long len, unsigned long flags) +{ + if (ARCH_SUN4C_SUN4 && + (len > 0x20000000 || + ((flags & MAP_FIXED) && + addr < 0xe0000000 && addr + len > 0x20000000))) + return -EINVAL; + + /* See asm-sparc/uaccess.h */ + if (len > TASK_SIZE - PAGE_SIZE || addr + len > TASK_SIZE - PAGE_SIZE) + return -EINVAL; + + return 0; +} + /* Linux version of mmap */ static unsigned long do_mmap2(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, @@ -233,25 +248,13 @@ goto out; } - retval = -EINVAL; len = PAGE_ALIGN(len); - if (ARCH_SUN4C_SUN4 && - (len > 0x20000000 || - ((flags & MAP_FIXED) && - addr < 0xe0000000 && addr + len > 0x20000000))) - goto out_putf; - - /* See asm-sparc/uaccess.h */ - if (len > TASK_SIZE - PAGE_SIZE || addr + len > TASK_SIZE - PAGE_SIZE) - goto out_putf; - flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); down_write(¤t->mm->mmap_sem); retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); up_write(¤t->mm->mmap_sem); -out_putf: if (file) fput(file); out: diff -urN linux-2.6.18-rc6/arch/sparc64/Kconfig linux-2.6.18-rc7/arch/sparc64/Kconfig --- linux-2.6.18-rc6/arch/sparc64/Kconfig 2006-09-13 03:15:59.118470049 +0000 +++ linux-2.6.18-rc7/arch/sparc64/Kconfig 2006-09-13 03:16:04.299029347 +0000 @@ -34,6 +34,10 @@ bool default y +config AUDIT_ARCH + bool + default y + choice prompt "Kernel page size" default SPARC64_PAGE_SIZE_8KB diff -urN linux-2.6.18-rc6/arch/sparc64/kernel/Makefile linux-2.6.18-rc7/arch/sparc64/kernel/Makefile --- linux-2.6.18-rc6/arch/sparc64/kernel/Makefile 2006-09-13 03:15:59.118470049 +0000 +++ linux-2.6.18-rc7/arch/sparc64/kernel/Makefile 2006-09-13 03:16:04.299029347 +0000 @@ -25,6 +25,9 @@ obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o obj-$(CONFIG_KPROBES) += kprobes.o +obj-$(CONFIG_AUDIT) += audit.o +obj-$(CONFIG_AUDIT)$(CONFIG_SPARC32_COMPAT) += compat_audit.o +obj-y += $(obj-yy) ifdef CONFIG_SUNOS_EMUL obj-y += sys_sunos32.o sunos_ioctl32.o diff -urN linux-2.6.18-rc6/arch/sparc64/kernel/audit.c linux-2.6.18-rc7/arch/sparc64/kernel/audit.c --- linux-2.6.18-rc6/arch/sparc64/kernel/audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/sparc64/kernel/audit.c 2006-09-13 03:16:04.303029779 +0000 @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +static unsigned dir_class[] = { +#include +~0U +}; + +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + +static unsigned chattr_class[] = { +#include +~0U +}; + +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_SPARC32_COMPAT + extern int sparc32_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_SPARC) + return sparc32_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 0; + } +} + +static int __init audit_classes_init(void) +{ +#ifdef CONFIG_SPARC32_COMPAT + extern __u32 sparc32_dir_class[]; + extern __u32 sparc32_write_class[]; + extern __u32 sparc32_read_class[]; + extern __u32 sparc32_chattr_class[]; + audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); + audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); + audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); +#endif + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); + audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); + return 0; +} + +__initcall(audit_classes_init); diff -urN linux-2.6.18-rc6/arch/sparc64/kernel/compat_audit.c linux-2.6.18-rc7/arch/sparc64/kernel/compat_audit.c --- linux-2.6.18-rc6/arch/sparc64/kernel/compat_audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/arch/sparc64/kernel/compat_audit.c 2006-09-13 03:16:04.303029779 +0000 @@ -0,0 +1,37 @@ +#include + +unsigned sparc32_dir_class[] = { +#include +~0U +}; + +unsigned sparc32_chattr_class[] = { +#include +~0U +}; + +unsigned sparc32_write_class[] = { +#include +~0U +}; + +unsigned sparc32_read_class[] = { +#include +~0U +}; + +int sparc32_classify_syscall(unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 1; + } +} diff -urN linux-2.6.18-rc6/arch/sparc64/kernel/sys_sparc.c linux-2.6.18-rc7/arch/sparc64/kernel/sys_sparc.c --- linux-2.6.18-rc6/arch/sparc64/kernel/sys_sparc.c 2006-09-13 03:15:59.134471776 +0000 +++ linux-2.6.18-rc7/arch/sparc64/kernel/sys_sparc.c 2006-09-13 03:16:04.319031506 +0000 @@ -548,6 +548,26 @@ return ret; } +int sparc64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags) +{ + if (test_thread_flag(TIF_32BIT)) { + if (len >= STACK_TOP32) + return -EINVAL; + + if ((flags & MAP_FIXED) && addr > STACK_TOP32 - len) + return -EINVAL; + } else { + if (len >= VA_EXCLUDE_START) + return -EINVAL; + + if ((flags & MAP_FIXED) && invalid_64bit_range(addr, len)) + return -EINVAL; + } + + return 0; +} + /* Linux version of mmap */ asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, @@ -563,27 +583,11 @@ } flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); len = PAGE_ALIGN(len); - retval = -EINVAL; - - if (test_thread_flag(TIF_32BIT)) { - if (len >= STACK_TOP32) - goto out_putf; - - if ((flags & MAP_FIXED) && addr > STACK_TOP32 - len) - goto out_putf; - } else { - if (len >= VA_EXCLUDE_START) - goto out_putf; - - if ((flags & MAP_FIXED) && invalid_64bit_range(addr, len)) - goto out_putf; - } down_write(¤t->mm->mmap_sem); retval = do_mmap(file, addr, len, prot, flags, off); up_write(¤t->mm->mmap_sem); -out_putf: if (file) fput(file); out: diff -urN linux-2.6.18-rc6/arch/x86_64/Kconfig linux-2.6.18-rc7/arch/x86_64/Kconfig --- linux-2.6.18-rc6/arch/x86_64/Kconfig 2006-09-13 03:15:59.162474800 +0000 +++ linux-2.6.18-rc7/arch/x86_64/Kconfig 2006-09-13 03:16:04.347034530 +0000 @@ -85,6 +85,10 @@ bool default y +config AUDIT_ARCH + bool + default y + source "init/Kconfig" diff -urN linux-2.6.18-rc6/arch/x86_64/ia32/audit.c linux-2.6.18-rc7/arch/x86_64/ia32/audit.c --- linux-2.6.18-rc6/arch/x86_64/ia32/audit.c 2006-09-13 03:15:59.166475231 +0000 +++ linux-2.6.18-rc7/arch/x86_64/ia32/audit.c 2006-09-13 03:16:04.351034961 +0000 @@ -9,3 +9,29 @@ #include ~0U }; + +unsigned ia32_write_class[] = { +#include +~0U +}; + +unsigned ia32_read_class[] = { +#include +~0U +}; + +int ia32_classify_syscall(unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 1; + } +} diff -urN linux-2.6.18-rc6/arch/x86_64/kernel/audit.c linux-2.6.18-rc7/arch/x86_64/kernel/audit.c --- linux-2.6.18-rc6/arch/x86_64/kernel/audit.c 2006-09-13 03:15:59.170475663 +0000 +++ linux-2.6.18-rc7/arch/x86_64/kernel/audit.c 2006-09-13 03:16:04.355035393 +0000 @@ -8,19 +8,54 @@ ~0U }; +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + static unsigned chattr_class[] = { #include ~0U }; +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_IA32_EMULATION + extern int ia32_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_I386) + return ia32_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_execve: + return 5; + default: + return 0; + } +} + static int __init audit_classes_init(void) { #ifdef CONFIG_IA32_EMULATION extern __u32 ia32_dir_class[]; + extern __u32 ia32_write_class[]; + extern __u32 ia32_read_class[]; extern __u32 ia32_chattr_class[]; + audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); + audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); #endif + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); return 0; diff -urN linux-2.6.18-rc6/drivers/ide/ide-proc.c linux-2.6.18-rc7/drivers/ide/ide-proc.c --- linux-2.6.18-rc6/drivers/ide/ide-proc.c 2006-09-13 03:15:59.462507191 +0000 +++ linux-2.6.18-rc7/drivers/ide/ide-proc.c 2006-09-13 03:16:04.647066921 +0000 @@ -376,6 +376,8 @@ break; case ide_floppy:media = "floppy\n"; break; + case ide_optical:media = "optical\n"; + break; default: media = "UNKNOWN\n"; break; } diff -urN linux-2.6.18-rc6/drivers/ide/pci/aec62xx.c linux-2.6.18-rc7/drivers/ide/pci/aec62xx.c --- linux-2.6.18-rc6/drivers/ide/pci/aec62xx.c 2006-09-13 03:15:59.470508055 +0000 +++ linux-2.6.18-rc7/drivers/ide/pci/aec62xx.c 2006-09-13 03:16:04.651067353 +0000 @@ -425,12 +425,12 @@ return d->init_setup(dev, d); } -static const struct pci_device_id aec62xx_pci_tbl[] = { - { PCI_DEVICE(PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP850UF), 0 }, - { PCI_DEVICE(PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP860), 1 }, - { PCI_DEVICE(PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP860R), 2 }, - { PCI_DEVICE(PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP865), 3 }, - { PCI_DEVICE(PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP865R), 4 }, +static struct pci_device_id aec62xx_pci_tbl[] = { + { PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP850UF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP860, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, + { PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP860R, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2 }, + { PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP865, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3 }, + { PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP865R, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, { 0, }, }; MODULE_DEVICE_TABLE(pci, aec62xx_pci_tbl); diff -urN linux-2.6.18-rc6/drivers/ide/pci/serverworks.c linux-2.6.18-rc7/drivers/ide/pci/serverworks.c --- linux-2.6.18-rc6/drivers/ide/pci/serverworks.c 2006-09-13 03:15:59.474508487 +0000 +++ linux-2.6.18-rc7/drivers/ide/pci/serverworks.c 2006-09-13 03:16:04.655067785 +0000 @@ -649,11 +649,11 @@ } static struct pci_device_id svwks_pci_tbl[] = { - { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4IDE), 0}, - { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE), 1}, - { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE), 2}, - { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2), 3}, - { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000IDE), 4}, + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1}, + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2}, + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3}, + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4}, { 0, }, }; MODULE_DEVICE_TABLE(pci, svwks_pci_tbl); diff -urN linux-2.6.18-rc6/drivers/ide/pci/siimage.c linux-2.6.18-rc7/drivers/ide/pci/siimage.c --- linux-2.6.18-rc6/drivers/ide/pci/siimage.c 2006-09-13 03:15:59.474508487 +0000 +++ linux-2.6.18-rc7/drivers/ide/pci/siimage.c 2006-09-13 03:16:04.659068217 +0000 @@ -1082,10 +1082,10 @@ } static struct pci_device_id siimage_pci_tbl[] = { - { PCI_DEVICE(PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_680), 0}, + { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, #ifdef CONFIG_BLK_DEV_IDE_SATA - { PCI_DEVICE(PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_3112), 1}, - { PCI_DEVICE(PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_1210SA), 2}, + { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1}, + { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_1210SA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2}, #endif { 0, }, }; diff -urN linux-2.6.18-rc6/drivers/ide/pci/sis5513.c linux-2.6.18-rc7/drivers/ide/pci/sis5513.c --- linux-2.6.18-rc6/drivers/ide/pci/sis5513.c 2006-09-13 03:15:59.474508487 +0000 +++ linux-2.6.18-rc7/drivers/ide/pci/sis5513.c 2006-09-13 03:16:04.659068217 +0000 @@ -86,6 +86,8 @@ u8 chipset_family; u8 flags; } SiSHostChipInfo[] = { + { "SiS968", PCI_DEVICE_ID_SI_968, ATA_133 }, + { "SiS966", PCI_DEVICE_ID_SI_966, ATA_133 }, { "SiS965", PCI_DEVICE_ID_SI_965, ATA_133 }, { "SiS745", PCI_DEVICE_ID_SI_745, ATA_100 }, { "SiS735", PCI_DEVICE_ID_SI_735, ATA_100 }, diff -urN linux-2.6.18-rc6/drivers/media/Kconfig linux-2.6.18-rc7/drivers/media/Kconfig --- linux-2.6.18-rc6/drivers/media/Kconfig 2006-09-13 03:15:59.606522739 +0000 +++ linux-2.6.18-rc7/drivers/media/Kconfig 2006-09-13 03:16:04.787082038 +0000 @@ -53,7 +53,7 @@ If you are unsure as to whether this is required, answer Y. config VIDEO_V4L2 - tristate + bool default y source "drivers/media/video/Kconfig" diff -urN linux-2.6.18-rc6/drivers/media/common/saa7146_video.c linux-2.6.18-rc7/drivers/media/common/saa7146_video.c --- linux-2.6.18-rc6/drivers/media/common/saa7146_video.c 2006-09-13 03:15:59.606522739 +0000 +++ linux-2.6.18-rc7/drivers/media/common/saa7146_video.c 2006-09-13 03:16:04.787082038 +0000 @@ -1190,6 +1190,7 @@ } return err; } +#ifdef CONFIG_VIDEO_V4L1_COMPAT case VIDIOCGMBUF: { struct video_mbuf *mbuf = arg; @@ -1218,6 +1219,7 @@ mutex_unlock(&q->lock); return 0; } +#endif default: return v4l_compat_translate_ioctl(inode,file,cmd,arg, saa7146_video_do_ioctl); diff -urN linux-2.6.18-rc6/drivers/media/dvb/b2c2/Kconfig linux-2.6.18-rc7/drivers/media/dvb/b2c2/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/b2c2/Kconfig 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/b2c2/Kconfig 2006-09-13 03:16:04.791082470 +0000 @@ -1,6 +1,7 @@ config DVB_B2C2_FLEXCOP tristate "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" depends on DVB_CORE && I2C + select DVB_PLL select DVB_STV0299 select DVB_MT352 select DVB_MT312 diff -urN linux-2.6.18-rc6/drivers/media/dvb/bt8xx/Kconfig linux-2.6.18-rc7/drivers/media/dvb/bt8xx/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/bt8xx/Kconfig 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/bt8xx/Kconfig 2006-09-13 03:16:04.791082470 +0000 @@ -1,6 +1,7 @@ config DVB_BT8XX tristate "BT8xx based PCI cards" depends on DVB_CORE && PCI && I2C && VIDEO_BT848 + select DVB_PLL select DVB_MT352 select DVB_SP887X select DVB_NXT6000 diff -urN linux-2.6.18-rc6/drivers/media/dvb/dvb-usb/Kconfig linux-2.6.18-rc7/drivers/media/dvb/dvb-usb/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/dvb-usb/Kconfig 2006-09-13 03:15:59.618524035 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/dvb-usb/Kconfig 2006-09-13 03:16:04.799083333 +0000 @@ -2,6 +2,7 @@ tristate "Support for various USB DVB devices" depends on DVB_CORE && USB && I2C select FW_LOADER + select DVB_PLL help By enabling this you will be able to choose the various supported USB1.1 and USB2.0 DVB devices. diff -urN linux-2.6.18-rc6/drivers/media/dvb/frontends/Kconfig linux-2.6.18-rc7/drivers/media/dvb/frontends/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/frontends/Kconfig 2006-09-13 03:15:59.622524467 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/frontends/Kconfig 2006-09-13 03:16:04.803083765 +0000 @@ -6,43 +6,43 @@ config DVB_STV0299 tristate "ST STV0299 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_CX24110 tristate "Conexant CX24110 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_CX24123 tristate "Conexant CX24123 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_TDA8083 tristate "Philips TDA8083 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_MT312 tristate "Zarlink VP310/MT312 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_VES1X93 tristate "VLSI VES1893 or VES1993 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. config DVB_S5H1420 tristate "Samsung S5H1420 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-S tuner module. Say Y when you want to support this frontend. @@ -51,7 +51,7 @@ config DVB_SP8870 tristate "Spase sp8870 based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help A DVB-T tuner module. Say Y when you want to support this frontend. @@ -63,7 +63,7 @@ config DVB_SP887X tristate "Spase sp887x based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help A DVB-T tuner module. Say Y when you want to support this frontend. @@ -75,25 +75,25 @@ config DVB_CX22700 tristate "Conexant CX22700 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_CX22702 tristate "Conexant cx22702 demodulator (OFDM)" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_L64781 tristate "LSI L64781" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_TDA1004X tristate "Philips TDA10045H/TDA10046H based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help A DVB-T tuner module. Say Y when you want to support this frontend. @@ -106,32 +106,32 @@ config DVB_NXT6000 tristate "NxtWave Communications NXT6000 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_MT352 tristate "Zarlink MT352 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_ZL10353 tristate "Zarlink ZL10353 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Say Y when you want to support this frontend. config DVB_DIB3000MB tristate "DiBcom 3000M-B" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Designed for mobile usage. Say Y when you want to support this frontend. config DVB_DIB3000MC tristate "DiBcom 3000P/M-C" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-T tuner module. Designed for mobile usage. Say Y when you want to support this frontend. @@ -141,19 +141,19 @@ config DVB_VES1820 tristate "VLSI VES1820 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-C tuner module. Say Y when you want to support this frontend. config DVB_TDA10021 tristate "Philips TDA10021 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-C tuner module. Say Y when you want to support this frontend. config DVB_STV0297 tristate "ST STV0297 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help A DVB-C tuner module. Say Y when you want to support this frontend. @@ -162,7 +162,7 @@ config DVB_NXT200X tristate "NxtWave Communications NXT2002/NXT2004 based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want @@ -176,7 +176,7 @@ config DVB_OR51211 tristate "Oren OR51211 based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help An ATSC 8VSB tuner module. Say Y when you want to support this frontend. @@ -188,7 +188,7 @@ config DVB_OR51132 tristate "Oren OR51132 based" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want @@ -203,7 +203,7 @@ config DVB_BCM3510 tristate "Broadcom BCM3510" - depends on DVB_CORE + depends on DVB_CORE && I2C select FW_LOADER help An ATSC 8VSB/16VSB and QAM64/256 tuner module. Say Y when you want to @@ -211,7 +211,7 @@ config DVB_LGDT330X tristate "LG Electronics LGDT3302/LGDT3303 based" - depends on DVB_CORE + depends on DVB_CORE && I2C help An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want to support this frontend. @@ -220,15 +220,19 @@ comment "Miscellaneous devices" depends on DVB_CORE +config DVB_PLL + tristate + depends on DVB_CORE && I2C + config DVB_LNBP21 tristate "LNBP21 SEC controller" - depends on DVB_CORE + depends on DVB_CORE && I2C help An SEC control chip. config DVB_ISL6421 tristate "ISL6421 SEC controller" - depends on DVB_CORE + depends on DVB_CORE && I2C help An SEC control chip. diff -urN linux-2.6.18-rc6/drivers/media/dvb/frontends/Makefile linux-2.6.18-rc7/drivers/media/dvb/frontends/Makefile --- linux-2.6.18-rc6/drivers/media/dvb/frontends/Makefile 2006-09-13 03:15:59.622524467 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/frontends/Makefile 2006-09-13 03:16:04.803083765 +0000 @@ -4,7 +4,7 @@ EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -obj-$(CONFIG_DVB_CORE) += dvb-pll.o +obj-$(CONFIG_DVB_PLL) += dvb-pll.o obj-$(CONFIG_DVB_STV0299) += stv0299.o obj-$(CONFIG_DVB_SP8870) += sp8870.o obj-$(CONFIG_DVB_CX22700) += cx22700.o diff -urN linux-2.6.18-rc6/drivers/media/dvb/pluto2/Kconfig linux-2.6.18-rc7/drivers/media/dvb/pluto2/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/pluto2/Kconfig 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/pluto2/Kconfig 2006-09-13 03:16:04.819085493 +0000 @@ -2,6 +2,7 @@ tristate "Pluto2 cards" depends on DVB_CORE && PCI && I2C select I2C_ALGOBIT + select DVB_PLL select DVB_TDA1004X help Support for PCI cards based on the Pluto2 FPGA like the Satelco diff -urN linux-2.6.18-rc6/drivers/media/dvb/ttpci/Kconfig linux-2.6.18-rc7/drivers/media/dvb/ttpci/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/ttpci/Kconfig 2006-09-13 03:15:59.638526194 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/ttpci/Kconfig 2006-09-13 03:16:04.819085493 +0000 @@ -3,6 +3,7 @@ depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 select FW_LOADER select VIDEO_SAA7146_VV + select DVB_PLL select DVB_VES1820 select DVB_VES1X93 select DVB_STV0299 @@ -61,6 +62,7 @@ tristate "Budget cards" depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 select VIDEO_SAA7146 + select DVB_PLL select DVB_STV0299 select DVB_VES1X93 select DVB_VES1820 @@ -83,6 +85,7 @@ tristate "Budget cards with onboard CI connector" depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 select VIDEO_SAA7146 + select DVB_PLL select DVB_STV0297 select DVB_STV0299 select DVB_TDA1004X @@ -104,6 +107,7 @@ tristate "Budget cards with analog video inputs" depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 select VIDEO_SAA7146_VV + select DVB_PLL select DVB_STV0299 select DVB_TDA1004X select DVB_TDA10021 @@ -122,6 +126,7 @@ tristate "AV7110 cards with Budget Patch" depends on DVB_CORE && DVB_BUDGET && VIDEO_V4L1 select DVB_AV7110 + select DVB_PLL select DVB_STV0299 select DVB_VES1X93 select DVB_TDA8083 diff -urN linux-2.6.18-rc6/drivers/media/dvb/ttusb-budget/Kconfig linux-2.6.18-rc7/drivers/media/dvb/ttusb-budget/Kconfig --- linux-2.6.18-rc6/drivers/media/dvb/ttusb-budget/Kconfig 2006-09-13 03:15:59.642526626 +0000 +++ linux-2.6.18-rc7/drivers/media/dvb/ttusb-budget/Kconfig 2006-09-13 03:16:04.823085925 +0000 @@ -1,6 +1,7 @@ config DVB_TTUSB_BUDGET tristate "Technotrend/Hauppauge Nova-USB devices" - depends on DVB_CORE && USB + depends on DVB_CORE && USB && I2C + select DVB_PLL select DVB_CX22700 select DVB_TDA1004X select DVB_VES1820 diff -urN linux-2.6.18-rc6/drivers/media/video/Kconfig linux-2.6.18-rc7/drivers/media/video/Kconfig --- linux-2.6.18-rc6/drivers/media/video/Kconfig 2006-09-13 03:15:59.650527490 +0000 +++ linux-2.6.18-rc7/drivers/media/video/Kconfig 2006-09-13 03:16:04.835087220 +0000 @@ -260,7 +260,7 @@ config VIDEO_MXB tristate "Siemens-Nixdorf 'Multimedia eXtension Board'" - depends on PCI && VIDEO_V4L1 + depends on PCI && VIDEO_V4L1 && I2C select VIDEO_SAA7146_VV select VIDEO_TUNER ---help--- @@ -272,7 +272,7 @@ config VIDEO_DPC tristate "Philips-Semiconductors 'dpc7146 demonstration board'" - depends on PCI && VIDEO_V4L1 + depends on PCI && VIDEO_V4L1 && I2C select VIDEO_SAA7146_VV select VIDEO_V4L2 ---help--- @@ -287,7 +287,7 @@ config VIDEO_HEXIUM_ORION tristate "Hexium HV-PCI6 and Orion frame grabber" - depends on PCI && VIDEO_V4L1 + depends on PCI && VIDEO_V4L1 && I2C select VIDEO_SAA7146_VV select VIDEO_V4L2 ---help--- @@ -299,7 +299,7 @@ config VIDEO_HEXIUM_GEMINI tristate "Hexium Gemini frame grabber" - depends on PCI && VIDEO_V4L1 + depends on PCI && VIDEO_V4L1 && I2C select VIDEO_SAA7146_VV select VIDEO_V4L2 ---help--- diff -urN linux-2.6.18-rc6/drivers/media/video/bt8xx/bttv-input.c linux-2.6.18-rc7/drivers/media/video/bt8xx/bttv-input.c --- linux-2.6.18-rc6/drivers/media/video/bt8xx/bttv-input.c 2006-09-13 03:15:59.654527922 +0000 +++ linux-2.6.18-rc7/drivers/media/video/bt8xx/bttv-input.c 2006-09-13 03:16:04.839087652 +0000 @@ -303,6 +303,7 @@ ir->mask_keyup = 0x010000; ir->polling = 50; // ms break; + case BTTV_BOARD_PV_M4900: case BTTV_BOARD_PV_BT878P_9B: case BTTV_BOARD_PV_BT878P_PLUS: ir_codes = ir_codes_pixelview; diff -urN linux-2.6.18-rc6/drivers/media/video/cx88/Kconfig linux-2.6.18-rc7/drivers/media/video/cx88/Kconfig --- linux-2.6.18-rc6/drivers/media/video/cx88/Kconfig 2006-09-13 03:15:59.662528786 +0000 +++ linux-2.6.18-rc7/drivers/media/video/cx88/Kconfig 2006-09-13 03:16:04.847088516 +0000 @@ -51,6 +51,7 @@ tristate "DVB/ATSC Support for cx2388x based TV cards" depends on VIDEO_CX88 && DVB_CORE select VIDEO_BUF_DVB + select DVB_PLL ---help--- This adds support for DVB/ATSC cards based on the Conexant 2388x chip. diff -urN linux-2.6.18-rc6/drivers/media/video/saa7134/Kconfig linux-2.6.18-rc7/drivers/media/video/saa7134/Kconfig --- linux-2.6.18-rc6/drivers/media/video/saa7134/Kconfig 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/drivers/media/video/saa7134/Kconfig 2006-09-13 03:16:04.891093267 +0000 @@ -40,6 +40,7 @@ depends on VIDEO_SAA7134 && DVB_CORE select VIDEO_BUF_DVB select FW_LOADER + select DVB_PLL ---help--- This adds support for DVB cards based on the Philips saa7134 chip. diff -urN linux-2.6.18-rc6/drivers/media/video/tuner-types.c linux-2.6.18-rc7/drivers/media/video/tuner-types.c --- linux-2.6.18-rc6/drivers/media/video/tuner-types.c 2006-09-13 03:15:59.722535264 +0000 +++ linux-2.6.18-rc7/drivers/media/video/tuner-types.c 2006-09-13 03:16:04.903094563 +0000 @@ -926,11 +926,17 @@ /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */ +static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = { + { 16 * 160.25 /*MHz*/, 0x8e, 0x01, }, + { 16 * 464.25 /*MHz*/, 0x8e, 0x02, }, + { 16 * 999.99 , 0x8e, 0x08, }, +}; + static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = { { .type = TUNER_PARAM_TYPE_PAL, - .ranges = tuner_tena_9533_di_pal_ranges, - .count = ARRAY_SIZE(tuner_tena_9533_di_pal_ranges), + .ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges, + .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges), }, }; diff -urN linux-2.6.18-rc6/drivers/media/video/zoran.h linux-2.6.18-rc7/drivers/media/video/zoran.h --- linux-2.6.18-rc6/drivers/media/video/zoran.h 2006-09-13 03:15:59.734536560 +0000 +++ linux-2.6.18-rc7/drivers/media/video/zoran.h 2006-09-13 03:16:04.915095858 +0000 @@ -267,7 +267,7 @@ }; /* whoops, this one is undeclared if !v4l2 */ -#ifndef HAVE_V4L2 +#ifndef CONFIG_VIDEO_V4L2 struct v4l2_jpegcompression { int quality; int APPn; diff -urN linux-2.6.18-rc6/drivers/media/video/zoran_driver.c linux-2.6.18-rc7/drivers/media/video/zoran_driver.c --- linux-2.6.18-rc6/drivers/media/video/zoran_driver.c 2006-09-13 03:15:59.734536560 +0000 +++ linux-2.6.18-rc7/drivers/media/video/zoran_driver.c 2006-09-13 03:16:04.919096290 +0000 @@ -86,7 +86,7 @@ #include "zoran_device.h" #include "zoran_card.h" -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 /* we declare some card type definitions here, they mean * the same as the v4l1 ZORAN_VID_TYPE above, except it's v4l2 */ #define ZORAN_V4L2_VID_FLAGS ( \ @@ -103,7 +103,7 @@ { .name = "15-bit RGB", .palette = VIDEO_PALETTE_RGB555, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 #ifdef __LITTLE_ENDIAN .fourcc = V4L2_PIX_FMT_RGB555, #else @@ -117,7 +117,7 @@ }, { .name = "16-bit RGB", .palette = VIDEO_PALETTE_RGB565, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 #ifdef __LITTLE_ENDIAN .fourcc = V4L2_PIX_FMT_RGB565, #else @@ -131,7 +131,7 @@ }, { .name = "24-bit RGB", .palette = VIDEO_PALETTE_RGB24, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 #ifdef __LITTLE_ENDIAN .fourcc = V4L2_PIX_FMT_BGR24, #else @@ -145,7 +145,7 @@ }, { .name = "32-bit RGB", .palette = VIDEO_PALETTE_RGB32, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 #ifdef __LITTLE_ENDIAN .fourcc = V4L2_PIX_FMT_BGR32, #else @@ -159,7 +159,7 @@ }, { .name = "4:2:2, packed, YUYV", .palette = VIDEO_PALETTE_YUV422, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 .fourcc = V4L2_PIX_FMT_YUYV, .colorspace = V4L2_COLORSPACE_SMPTE170M, #endif @@ -169,7 +169,7 @@ }, { .name = "Hardware-encoded Motion-JPEG", .palette = -1, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 .fourcc = V4L2_PIX_FMT_MJPEG, .colorspace = V4L2_COLORSPACE_SMPTE170M, #endif @@ -210,7 +210,7 @@ module_param(lock_norm, int, 0); MODULE_PARM_DESC(lock_norm, "Users can't change norm"); -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 /* small helper function for calculating buffersizes for v4l2 * we calculate the nearest higher power-of-two, which * will be the recommended buffersize */ @@ -1761,7 +1761,7 @@ return wait_grab_pending(zr); } -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 /* get the status of a buffer in the clients buffer queue */ static int zoran_v4l2_buffer_status (struct file *file, @@ -2676,7 +2676,7 @@ } break; -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 /* The new video4linux2 capture interface - much nicer than video4linux1, since * it allows for integrating the JPEG capturing calls inside standard v4l2 @@ -4689,7 +4689,7 @@ struct video_device zoran_template __devinitdata = { .name = ZORAN_NAME, .type = ZORAN_VID_TYPE, -#ifdef HAVE_V4L2 +#ifdef CONFIG_VIDEO_V4L2 .type2 = ZORAN_V4L2_VID_FLAGS, #endif .hardware = ZORAN_HARDWARE, diff -urN linux-2.6.18-rc6/drivers/mmc/imxmmc.c linux-2.6.18-rc7/drivers/mmc/imxmmc.c --- linux-2.6.18-rc6/drivers/mmc/imxmmc.c 2006-09-13 03:15:59.758539151 +0000 +++ linux-2.6.18-rc7/drivers/mmc/imxmmc.c 2006-09-13 03:16:04.939098450 +0000 @@ -91,6 +91,8 @@ int dma_allocated; unsigned char actual_bus_width; + + int prev_cmd_code; }; #define IMXMCI_PEND_IRQ_b 0 @@ -248,16 +250,14 @@ * partial FIFO fills and reads. The length has to be rounded up to burst size multiple. * This is required for SCR read at least. */ - if (datasz < 64) { + if (datasz < 512) { host->dma_size = datasz; if (data->flags & MMC_DATA_READ) { host->dma_dir = DMA_FROM_DEVICE; /* Hack to enable read SCR */ - if(datasz < 16) { - MMC_NOB = 1; - MMC_BLK_LEN = 16; - } + MMC_NOB = 1; + MMC_BLK_LEN = 512; } else { host->dma_dir = DMA_TO_DEVICE; } @@ -409,6 +409,9 @@ spin_unlock_irqrestore(&host->lock, flags); + if(req && req->cmd) + host->prev_cmd_code = req->cmd->opcode; + host->req = NULL; host->cmd = NULL; host->data = NULL; @@ -553,7 +556,6 @@ { int i; int burst_len; - int flush_len; int trans_done = 0; unsigned int stat = *pstat; @@ -566,44 +568,43 @@ dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data running STATUS = 0x%x\n", stat); + udelay(20); /* required for clocks < 8MHz*/ + if(host->dma_dir == DMA_FROM_DEVICE) { imxmci_busy_wait_for_status(host, &stat, STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE, - 20, "imxmci_cpu_driven_data read"); + 50, "imxmci_cpu_driven_data read"); while((stat & (STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE)) && - (host->data_cnt < host->dma_size)) { - if(burst_len >= host->dma_size - host->data_cnt) { - flush_len = burst_len; - burst_len = host->dma_size - host->data_cnt; - flush_len -= burst_len; - host->data_cnt = host->dma_size; - trans_done = 1; - } else { - flush_len = 0; - host->data_cnt += burst_len; - } + (host->data_cnt < 512)) { + + udelay(20); /* required for clocks < 8MHz*/ for(i = burst_len; i>=2 ; i-=2) { - *(host->data_ptr++) = MMC_BUFFER_ACCESS; - udelay(20); /* required for clocks < 8MHz*/ + u16 data; + data = MMC_BUFFER_ACCESS; + udelay(10); /* required for clocks < 8MHz*/ + if(host->data_cnt+2 <= host->dma_size) { + *(host->data_ptr++) = data; + } else { + if(host->data_cnt < host->dma_size) + *(u8*)(host->data_ptr) = data; + } + host->data_cnt += 2; } - if(i == 1) - *(u8*)(host->data_ptr) = MMC_BUFFER_ACCESS; - stat = MMC_STATUS; - /* Flush extra bytes from FIFO */ - while(flush_len && !(stat & STATUS_DATA_TRANS_DONE)){ - i = MMC_BUFFER_ACCESS; - stat = MMC_STATUS; - stat &= ~STATUS_CRC_READ_ERR; /* Stupid but required there */ - } - - dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data read burst %d STATUS = 0x%x\n", - burst_len, stat); + dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data read %d burst %d STATUS = 0x%x\n", + host->data_cnt, burst_len, stat); } + + if((stat & STATUS_DATA_TRANS_DONE) && (host->data_cnt >= 512)) + trans_done = 1; + + if(host->dma_size & 0x1ff) + stat &= ~STATUS_CRC_READ_ERR; + } else { imxmci_busy_wait_for_status(host, &stat, STATUS_APPL_BUFF_FE, @@ -692,8 +693,8 @@ what, stat, MMC_INT_MASK); dev_err(mmc_dev(host->mmc), "CMD_DAT_CONT = 0x%04x, MMC_BLK_LEN = 0x%04x, MMC_NOB = 0x%04x, DMA_CCR = 0x%08x\n", MMC_CMD_DAT_CONT, MMC_BLK_LEN, MMC_NOB, CCR(host->dma)); - dev_err(mmc_dev(host->mmc), "CMD%d, bus %d-bit, dma_size = 0x%x\n", - host->cmd?host->cmd->opcode:0, 1<actual_bus_width, host->dma_size); + dev_err(mmc_dev(host->mmc), "CMD%d, prevCMD%d, bus %d-bit, dma_size = 0x%x\n", + host->cmd?host->cmd->opcode:0, host->prev_cmd_code, 1<actual_bus_width, host->dma_size); } if(!host->present || timeout) diff -urN linux-2.6.18-rc6/drivers/mmc/mmc.c linux-2.6.18-rc7/drivers/mmc/mmc.c --- linux-2.6.18-rc6/drivers/mmc/mmc.c 2006-09-13 03:15:59.758539151 +0000 +++ linux-2.6.18-rc7/drivers/mmc/mmc.c 2006-09-13 03:16:04.939098450 +0000 @@ -247,6 +247,55 @@ EXPORT_SYMBOL(mmc_wait_for_app_cmd); +/** + * mmc_set_data_timeout - set the timeout for a data command + * @data: data phase for command + * @card: the MMC card associated with the data transfer + * @write: flag to differentiate reads from writes + */ +void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card, + int write) +{ + unsigned int mult; + + /* + * SD cards use a 100 multiplier rather than 10 + */ + mult = mmc_card_sd(card) ? 100 : 10; + + /* + * Scale up the multiplier (and therefore the timeout) by + * the r2w factor for writes. + */ + if (write) + mult <<= card->csd.r2w_factor; + + data->timeout_ns = card->csd.tacc_ns * mult; + data->timeout_clks = card->csd.tacc_clks * mult; + + /* + * SD cards also have an upper limit on the timeout. + */ + if (mmc_card_sd(card)) { + unsigned int timeout_us, limit_us; + + timeout_us = data->timeout_ns / 1000; + timeout_us += data->timeout_clks * 1000 / + (card->host->ios.clock / 1000); + + if (write) + limit_us = 250000; + else + limit_us = 100000; + + if (timeout_us > limit_us) { + data->timeout_ns = limit_us * 1000; + data->timeout_clks = 0; + } + } +} +EXPORT_SYMBOL(mmc_set_data_timeout); + static int mmc_select_card(struct mmc_host *host, struct mmc_card *card); /** @@ -908,11 +957,9 @@ { int err; struct mmc_card *card; - struct mmc_request mrq; struct mmc_command cmd; struct mmc_data data; - struct scatterlist sg; list_for_each_entry(card, &host->cards, node) { @@ -947,8 +994,8 @@ memset(&data, 0, sizeof(struct mmc_data)); - data.timeout_ns = card->csd.tacc_ns * 10; - data.timeout_clks = card->csd.tacc_clks * 10; + mmc_set_data_timeout(&data, card, 0); + data.blksz_bits = 3; data.blksz = 1 << 3; data.blocks = 1; diff -urN linux-2.6.18-rc6/drivers/mmc/mmc_block.c linux-2.6.18-rc7/drivers/mmc/mmc_block.c --- linux-2.6.18-rc6/drivers/mmc/mmc_block.c 2006-09-13 03:15:59.758539151 +0000 +++ linux-2.6.18-rc7/drivers/mmc/mmc_block.c 2006-09-13 03:16:04.939098450 +0000 @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -171,8 +172,6 @@ brq.cmd.arg = req->sector << 9; brq.cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; - brq.data.timeout_ns = card->csd.tacc_ns * 10; - brq.data.timeout_clks = card->csd.tacc_clks * 10; brq.data.blksz_bits = md->block_bits; brq.data.blksz = 1 << md->block_bits; brq.data.blocks = req->nr_sectors >> (md->block_bits - 9); @@ -180,6 +179,8 @@ brq.stop.arg = 0; brq.stop.flags = MMC_RSP_R1B | MMC_CMD_AC; + mmc_set_data_timeout(&brq.data, card, rq_data_dir(req) != READ); + if (rq_data_dir(req) == READ) { brq.cmd.opcode = brq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK; brq.data.flags |= MMC_DATA_READ; @@ -187,12 +188,6 @@ brq.cmd.opcode = MMC_WRITE_BLOCK; brq.data.flags |= MMC_DATA_WRITE; brq.data.blocks = 1; - - /* - * Scale up the timeout by the r2w factor - */ - brq.data.timeout_ns <<= card->csd.r2w_factor; - brq.data.timeout_clks <<= card->csd.r2w_factor; } if (brq.data.blocks > 1) { @@ -324,52 +319,11 @@ md->read_only = mmc_blk_readonly(card); /* - * Figure out a workable block size. MMC cards have: - * - two block sizes, one for read and one for write. - * - may support partial reads and/or writes - * (allows block sizes smaller than specified) - */ - md->block_bits = card->csd.read_blkbits; - if (card->csd.write_blkbits != card->csd.read_blkbits) { - if (card->csd.write_blkbits < card->csd.read_blkbits && - card->csd.read_partial) { - /* - * write block size is smaller than read block - * size, but we support partial reads, so choose - * the smaller write block size. - */ - md->block_bits = card->csd.write_blkbits; - } else if (card->csd.write_blkbits > card->csd.read_blkbits && - card->csd.write_partial) { - /* - * read block size is smaller than write block - * size, but we support partial writes. Use read - * block size. - */ - } else { - /* - * We don't support this configuration for writes. - */ - printk(KERN_ERR "%s: unable to select block size for " - "writing (rb%u wb%u rp%u wp%u)\n", - mmc_card_id(card), - 1 << card->csd.read_blkbits, - 1 << card->csd.write_blkbits, - card->csd.read_partial, - card->csd.write_partial); - md->read_only = 1; - } - } - - /* - * Refuse to allow block sizes smaller than 512 bytes. + * Both SD and MMC specifications state (although a bit + * unclearly in the MMC case) that a block size of 512 + * bytes must always be supported by the card. */ - if (md->block_bits < 9) { - printk(KERN_ERR "%s: unable to support block size %u\n", - mmc_card_id(card), 1 << md->block_bits); - ret = -EINVAL; - goto err_kfree; - } + md->block_bits = 9; md->disk = alloc_disk(1 << MMC_SHIFT); if (md->disk == NULL) { diff -urN linux-2.6.18-rc6/drivers/net/Kconfig linux-2.6.18-rc7/drivers/net/Kconfig --- linux-2.6.18-rc6/drivers/net/Kconfig 2006-09-13 03:15:59.810544765 +0000 +++ linux-2.6.18-rc7/drivers/net/Kconfig 2006-09-13 03:16:04.995104496 +0000 @@ -2393,7 +2393,7 @@ you will need a newer firmware image. You may get this image or more information, at: - + To compile this driver as a module, choose M here and read . The module diff -urN linux-2.6.18-rc6/drivers/net/dm9000.c linux-2.6.18-rc7/drivers/net/dm9000.c --- linux-2.6.18-rc6/drivers/net/dm9000.c 2006-09-13 03:15:59.854549516 +0000 +++ linux-2.6.18-rc7/drivers/net/dm9000.c 2006-09-13 03:16:05.035108815 +0000 @@ -377,8 +377,8 @@ kfree(db->data_req); } - if (db->addr_res != NULL) { - release_resource(db->addr_res); + if (db->addr_req != NULL) { + release_resource(db->addr_req); kfree(db->addr_req); } } diff -urN linux-2.6.18-rc6/drivers/scsi/ata_piix.c linux-2.6.18-rc7/drivers/scsi/ata_piix.c --- linux-2.6.18-rc6/drivers/scsi/ata_piix.c 2006-09-13 03:16:00.218588818 +0000 +++ linux-2.6.18-rc7/drivers/scsi/ata_piix.c 2006-09-13 03:16:05.395147685 +0000 @@ -123,7 +123,8 @@ ich6_sata = 4, ich6_sata_ahci = 5, ich6m_sata_ahci = 6, - ich8_sata_ahci = 7, + ich7m_sata_ahci = 7, + ich8_sata_ahci = 8, /* constants for mapping table */ P0 = 0, /* port 0 */ @@ -188,7 +189,7 @@ /* 82801GB/GR/GH (ICH7, identical to ICH6) */ { 0x8086, 0x27c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, /* 2801GBM/GHM (ICH7M, identical to ICH6M) */ - { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6m_sata_ahci }, + { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7m_sata_ahci }, /* Enterprise Southbridge 2 (where's the datasheet?) */ { 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, /* SATA Controller 1 IDE (ICH8, no datasheet yet) */ @@ -336,6 +337,24 @@ }, }; +static const struct piix_map_db ich7m_map_db = { + .mask = 0x3, + .port_enable = 0x5, + .present_shift = 4, + + /* Map 01b isn't specified in the doc but some notebooks use + * it anyway. ATM, the only case spotted carries subsystem ID + * 1025:0107. This is the only difference from ich6m. + */ + .map = { + /* PM PS SM SS MAP */ + { P0, P2, RV, RV }, /* 00b */ + { IDE, IDE, P1, P3 }, /* 01b */ + { P0, P2, IDE, IDE }, /* 10b */ + { RV, RV, RV, RV }, + }, +}; + static const struct piix_map_db ich8_map_db = { .mask = 0x3, .port_enable = 0x3, @@ -355,6 +374,7 @@ [ich6_sata] = &ich6_map_db, [ich6_sata_ahci] = &ich6_map_db, [ich6m_sata_ahci] = &ich6m_map_db, + [ich7m_sata_ahci] = &ich7m_map_db, [ich8_sata_ahci] = &ich8_map_db, }; @@ -444,6 +464,18 @@ .port_ops = &piix_sata_ops, }, + /* ich7m_sata_ahci */ + { + .sht = &piix_sht, + .host_flags = ATA_FLAG_SATA | + PIIX_FLAG_CHECKINTR | PIIX_FLAG_SCR | + PIIX_FLAG_AHCI, + .pio_mask = 0x1f, /* pio0-4 */ + .mwdma_mask = 0x07, /* mwdma0-2 */ + .udma_mask = 0x7f, /* udma0-6 */ + .port_ops = &piix_sata_ops, + }, + /* ich8_sata_ahci */ { .sht = &piix_sht, diff -urN linux-2.6.18-rc6/drivers/scsi/sata_mv.c linux-2.6.18-rc7/drivers/scsi/sata_mv.c --- linux-2.6.18-rc6/drivers/scsi/sata_mv.c 2006-09-13 03:16:00.382606526 +0000 +++ linux-2.6.18-rc7/drivers/scsi/sata_mv.c 2006-09-13 03:16:05.563165825 +0000 @@ -1961,8 +1961,7 @@ timeout = jiffies + msecs_to_jiffies(200); do { sata_scr_read(ap, SCR_STATUS, &sstatus); - sstatus &= 0x3; - if ((sstatus == 3) || (sstatus == 0)) + if (((sstatus & 0x3) == 3) || ((sstatus & 0x3) == 0)) break; __msleep(1, can_sleep); diff -urN linux-2.6.18-rc6/drivers/scsi/sata_via.c linux-2.6.18-rc7/drivers/scsi/sata_via.c --- linux-2.6.18-rc6/drivers/scsi/sata_via.c 2006-09-13 03:16:00.386606958 +0000 +++ linux-2.6.18-rc7/drivers/scsi/sata_via.c 2006-09-13 03:16:05.567166257 +0000 @@ -77,6 +77,7 @@ static void vt6420_error_handler(struct ata_port *ap); static const struct pci_device_id svia_pci_tbl[] = { + { 0x1106, 0x0591, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 }, { 0x1106, 0x3149, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 }, { 0x1106, 0x3249, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6421 }, diff -urN linux-2.6.18-rc6/drivers/serial/sh-sci.c linux-2.6.18-rc7/drivers/serial/sh-sci.c --- linux-2.6.18-rc6/drivers/serial/sh-sci.c 2006-09-13 03:16:00.430611708 +0000 +++ linux-2.6.18-rc7/drivers/serial/sh-sci.c 2006-09-13 03:16:05.611171008 +0000 @@ -1579,7 +1579,7 @@ h8300_sci_enable(port, sci_enable); #endif #elif defined(CONFIG_SUPERH64) - port->uartclk = current_cpu_info.module_clock * 16; + port->uartclk = current_cpu_data.module_clock * 16; #else { struct clk *clk = clk_get("module_clk"); @@ -1720,7 +1720,7 @@ #if defined(__H8300H__) || defined(__H8300S__) sciport->port.uartclk = CONFIG_CPU_CLOCK; #elif defined(CONFIG_SUPERH64) - sciport->port.uartclk = current_cpu_info.module_clock * 16; + sciport->port.uartclk = current_cpu_data.module_clock * 16; #else struct clk *clk = clk_get("module_clk"); sciport->port.uartclk = clk_get_rate(clk) * 16; diff -urN linux-2.6.18-rc6/drivers/usb/input/hid-core.c linux-2.6.18-rc7/drivers/usb/input/hid-core.c --- linux-2.6.18-rc6/drivers/usb/input/hid-core.c 2006-09-13 03:16:00.478616891 +0000 +++ linux-2.6.18-rc7/drivers/usb/input/hid-core.c 2006-09-13 03:16:05.659176190 +0000 @@ -1444,7 +1444,7 @@ #define USB_DEVICE_ID_GTCO_402 0x0402 #define USB_DEVICE_ID_GTCO_403 0x0403 #define USB_DEVICE_ID_GTCO_404 0x0404 -#define USB_DEVICE_ID_GTCO_404 0x0405 +#define USB_DEVICE_ID_GTCO_405 0x0405 #define USB_DEVICE_ID_GTCO_500 0x0500 #define USB_DEVICE_ID_GTCO_501 0x0501 #define USB_DEVICE_ID_GTCO_502 0x0502 @@ -1657,7 +1657,7 @@ { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_405, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502, HID_QUIRK_IGNORE }, diff -urN linux-2.6.18-rc6/drivers/usb/input/usbtouchscreen.c linux-2.6.18-rc7/drivers/usb/input/usbtouchscreen.c --- linux-2.6.18-rc6/drivers/usb/input/usbtouchscreen.c 2006-09-13 03:16:00.482617323 +0000 +++ linux-2.6.18-rc7/drivers/usb/input/usbtouchscreen.c 2006-09-13 03:16:05.663176622 +0000 @@ -286,7 +286,7 @@ static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) { *x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F); - *x = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F); + *y = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F); *press = ((pkt[2] & 0x1F) << 7) | (pkt[5] & 0x7F); *touch = ~pkt[7] & 0x20; diff -urN linux-2.6.18-rc6/drivers/usb/input/yealink.c linux-2.6.18-rc7/drivers/usb/input/yealink.c --- linux-2.6.18-rc6/drivers/usb/input/yealink.c 2006-09-13 03:16:00.482617323 +0000 +++ linux-2.6.18-rc7/drivers/usb/input/yealink.c 2006-09-13 03:16:05.663176622 +0000 @@ -810,12 +810,9 @@ if (yld == NULL) return err; - if (yld->urb_irq) { - usb_kill_urb(yld->urb_irq); - usb_free_urb(yld->urb_irq); - } - if (yld->urb_ctl) - usb_free_urb(yld->urb_ctl); + usb_kill_urb(yld->urb_irq); /* parameter validation in core/urb */ + usb_kill_urb(yld->urb_ctl); /* parameter validation in core/urb */ + if (yld->idev) { if (err) input_free_device(yld->idev); @@ -831,6 +828,9 @@ if (yld->irq_data) usb_buffer_free(yld->udev, USB_PKT_LEN, yld->irq_data, yld->irq_dma); + + usb_free_urb(yld->urb_irq); /* parameter validation in core/urb */ + usb_free_urb(yld->urb_ctl); /* parameter validation in core/urb */ kfree(yld); return err; } diff -urN linux-2.6.18-rc6/drivers/usb/misc/sisusbvga/sisusb.c linux-2.6.18-rc7/drivers/usb/misc/sisusbvga/sisusb.c --- linux-2.6.18-rc6/drivers/usb/misc/sisusbvga/sisusb.c 2006-09-13 03:16:00.486617755 +0000 +++ linux-2.6.18-rc7/drivers/usb/misc/sisusbvga/sisusb.c 2006-09-13 03:16:05.667177054 +0000 @@ -3435,6 +3435,8 @@ static struct usb_device_id sisusb_table [] = { { USB_DEVICE(0x0711, 0x0900) }, + { USB_DEVICE(0x0711, 0x0901) }, + { USB_DEVICE(0x0711, 0x0902) }, { USB_DEVICE(0x182d, 0x021c) }, { USB_DEVICE(0x182d, 0x0269) }, { } diff -urN linux-2.6.18-rc6/drivers/usb/serial/ftdi_sio.c linux-2.6.18-rc7/drivers/usb/serial/ftdi_sio.c --- linux-2.6.18-rc6/drivers/usb/serial/ftdi_sio.c 2006-09-13 03:16:00.502619482 +0000 +++ linux-2.6.18-rc7/drivers/usb/serial/ftdi_sio.c 2006-09-13 03:16:05.683178782 +0000 @@ -506,6 +506,7 @@ { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) }, { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) }, { USB_DEVICE(TESTO_VID, TESTO_USB_INTERFACE_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_GAMMA_SCOUT_PID) }, { }, /* Optional parameter entry */ { } /* Terminating entry */ }; diff -urN linux-2.6.18-rc6/drivers/usb/serial/ftdi_sio.h linux-2.6.18-rc7/drivers/usb/serial/ftdi_sio.h --- linux-2.6.18-rc6/drivers/usb/serial/ftdi_sio.h 2006-09-13 03:16:00.506619914 +0000 +++ linux-2.6.18-rc7/drivers/usb/serial/ftdi_sio.h 2006-09-13 03:16:05.683178782 +0000 @@ -467,6 +467,11 @@ #define TESTO_VID 0x128D #define TESTO_USB_INTERFACE_PID 0x0001 +/* + * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com. + */ +#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */ + /* Commands */ #define FTDI_SIO_RESET 0 /* Reset the port */ #define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ diff -urN linux-2.6.18-rc6/drivers/usb/serial/usb-serial.c linux-2.6.18-rc7/drivers/usb/serial/usb-serial.c --- linux-2.6.18-rc6/drivers/usb/serial/usb-serial.c 2006-09-13 03:16:00.514620778 +0000 +++ linux-2.6.18-rc7/drivers/usb/serial/usb-serial.c 2006-09-13 03:16:05.695180077 +0000 @@ -464,8 +464,10 @@ length += sprintf (page+length, " path:%s", tmp); length += sprintf (page+length, "\n"); - if ((length + begin) > (off + count)) + if ((length + begin) > (off + count)) { + usb_serial_put(serial); goto done; + } if ((length + begin) < off) { begin += length; length = 0; diff -urN linux-2.6.18-rc6/fs/cifs/readdir.c linux-2.6.18-rc7/fs/cifs/readdir.c --- linux-2.6.18-rc6/fs/cifs/readdir.c 2006-09-13 03:16:00.626632871 +0000 +++ linux-2.6.18-rc7/fs/cifs/readdir.c 2006-09-13 03:16:05.807192170 +0000 @@ -82,7 +82,6 @@ if(*ptmp_inode == NULL) return rc; rc = 1; - d_instantiate(tmp_dentry, *ptmp_inode); } } else { tmp_dentry = d_alloc(file->f_dentry, qstring); @@ -99,9 +98,7 @@ tmp_dentry->d_op = &cifs_dentry_ops; if(*ptmp_inode == NULL) return rc; - rc = 1; - d_instantiate(tmp_dentry, *ptmp_inode); - d_rehash(tmp_dentry); + rc = 2; } tmp_dentry->d_time = jiffies; @@ -870,6 +867,12 @@ pfindEntry, &obj_type, rc); else fill_in_inode(tmp_inode, 1 /* NT */, pfindEntry, &obj_type, rc); + + if(rc) /* new inode - needs to be tied to dentry */ { + d_instantiate(tmp_dentry, tmp_inode); + if(rc == 2) + d_rehash(tmp_dentry); + } rc = filldir(direntry,qstring.name,qstring.len,file->f_pos, diff -urN linux-2.6.18-rc6/fs/ext3/inode.c linux-2.6.18-rc7/fs/ext3/inode.c --- linux-2.6.18-rc6/fs/ext3/inode.c 2006-09-13 03:16:00.646635030 +0000 +++ linux-2.6.18-rc7/fs/ext3/inode.c 2006-09-13 03:16:05.827194330 +0000 @@ -1009,11 +1009,14 @@ buffer_trace_init(&dummy.b_history); err = ext3_get_blocks_handle(handle, inode, block, 1, &dummy, create, 1); - if (err == 1) { + /* + * ext3_get_blocks_handle() returns number of blocks + * mapped. 0 in case of a HOLE. + */ + if (err > 0) { + if (err > 1) + WARN_ON(1); err = 0; - } else if (err >= 0) { - WARN_ON(1); - err = -EIO; } *errp = err; if (!err && buffer_mapped(&dummy)) { diff -urN linux-2.6.18-rc6/fs/nfs/direct.c linux-2.6.18-rc7/fs/nfs/direct.c --- linux-2.6.18-rc6/fs/nfs/direct.c 2006-09-13 03:16:00.702641077 +0000 +++ linux-2.6.18-rc7/fs/nfs/direct.c 2006-09-13 03:16:05.879199944 +0000 @@ -100,25 +100,6 @@ return atomic_dec_and_test(&dreq->io_count); } -/* - * "size" is never larger than rsize or wsize. - */ -static inline int nfs_direct_count_pages(unsigned long user_addr, size_t size) -{ - int page_count; - - page_count = (user_addr + size + PAGE_SIZE - 1) >> PAGE_SHIFT; - page_count -= user_addr >> PAGE_SHIFT; - BUG_ON(page_count < 0); - - return page_count; -} - -static inline unsigned int nfs_max_pages(unsigned int size) -{ - return (size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; -} - /** * nfs_direct_IO - NFS address space operation for direct I/O * @rw: direction (read or write) @@ -276,28 +257,24 @@ struct nfs_open_context *ctx = dreq->ctx; struct inode *inode = ctx->dentry->d_inode; size_t rsize = NFS_SERVER(inode)->rsize; - unsigned int rpages = nfs_max_pages(rsize); unsigned int pgbase; int result; ssize_t started = 0; get_dreq(dreq); - pgbase = user_addr & ~PAGE_MASK; do { struct nfs_read_data *data; size_t bytes; + pgbase = user_addr & ~PAGE_MASK; + bytes = min(rsize,count); + result = -ENOMEM; - data = nfs_readdata_alloc(rpages); + data = nfs_readdata_alloc(pgbase + bytes); if (unlikely(!data)) break; - bytes = rsize; - if (count < rsize) - bytes = count; - - data->npages = nfs_direct_count_pages(user_addr, bytes); down_read(¤t->mm->mmap_sem); result = get_user_pages(current, current->mm, user_addr, data->npages, 1, 0, data->pagevec, NULL); @@ -344,8 +321,10 @@ started += bytes; user_addr += bytes; pos += bytes; + /* FIXME: Remove this unnecessary math from final patch */ pgbase += bytes; pgbase &= ~PAGE_MASK; + BUG_ON(pgbase != (user_addr & ~PAGE_MASK)); count -= bytes; } while (count != 0); @@ -524,7 +503,7 @@ static void nfs_alloc_commit_data(struct nfs_direct_req *dreq) { - dreq->commit_data = nfs_commit_alloc(0); + dreq->commit_data = nfs_commit_alloc(); if (dreq->commit_data != NULL) dreq->commit_data->req = (struct nfs_page *) dreq; } @@ -605,28 +584,24 @@ struct nfs_open_context *ctx = dreq->ctx; struct inode *inode = ctx->dentry->d_inode; size_t wsize = NFS_SERVER(inode)->wsize; - unsigned int wpages = nfs_max_pages(wsize); unsigned int pgbase; int result; ssize_t started = 0; get_dreq(dreq); - pgbase = user_addr & ~PAGE_MASK; do { struct nfs_write_data *data; size_t bytes; + pgbase = user_addr & ~PAGE_MASK; + bytes = min(wsize,count); + result = -ENOMEM; - data = nfs_writedata_alloc(wpages); + data = nfs_writedata_alloc(pgbase + bytes); if (unlikely(!data)) break; - bytes = wsize; - if (count < wsize) - bytes = count; - - data->npages = nfs_direct_count_pages(user_addr, bytes); down_read(¤t->mm->mmap_sem); result = get_user_pages(current, current->mm, user_addr, data->npages, 0, 0, data->pagevec, NULL); @@ -676,8 +651,11 @@ started += bytes; user_addr += bytes; pos += bytes; + + /* FIXME: Remove this useless math from the final patch */ pgbase += bytes; pgbase &= ~PAGE_MASK; + BUG_ON(pgbase != (user_addr & ~PAGE_MASK)); count -= bytes; } while (count != 0); diff -urN linux-2.6.18-rc6/fs/nfs/read.c linux-2.6.18-rc7/fs/nfs/read.c --- linux-2.6.18-rc6/fs/nfs/read.c 2006-09-13 03:16:00.710641941 +0000 +++ linux-2.6.18-rc7/fs/nfs/read.c 2006-09-13 03:16:05.891201240 +0000 @@ -43,13 +43,15 @@ #define MIN_POOL_READ (32) -struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount) +struct nfs_read_data *nfs_readdata_alloc(size_t len) { + unsigned int pagecount = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, SLAB_NOFS); if (p) { memset(p, 0, sizeof(*p)); INIT_LIST_HEAD(&p->pages); + p->npages = pagecount; if (pagecount <= ARRAY_SIZE(p->page_array)) p->pagevec = p->page_array; else { @@ -140,7 +142,7 @@ int result; struct nfs_read_data *rdata; - rdata = nfs_readdata_alloc(1); + rdata = nfs_readdata_alloc(count); if (!rdata) return -ENOMEM; @@ -336,25 +338,25 @@ struct nfs_page *req = nfs_list_entry(head->next); struct page *page = req->wb_page; struct nfs_read_data *data; - unsigned int rsize = NFS_SERVER(inode)->rsize; - unsigned int nbytes, offset; + size_t rsize = NFS_SERVER(inode)->rsize, nbytes; + unsigned int offset; int requests = 0; LIST_HEAD(list); nfs_list_remove_request(req); nbytes = req->wb_bytes; - for(;;) { - data = nfs_readdata_alloc(1); + do { + size_t len = min(nbytes,rsize); + + data = nfs_readdata_alloc(len); if (!data) goto out_bad; INIT_LIST_HEAD(&data->pages); list_add(&data->pages, &list); requests++; - if (nbytes <= rsize) - break; - nbytes -= rsize; - } + nbytes -= len; + } while(nbytes != 0); atomic_set(&req->wb_complete, requests); ClearPageError(page); @@ -402,7 +404,7 @@ if (NFS_SERVER(inode)->rsize < PAGE_CACHE_SIZE) return nfs_pagein_multi(head, inode); - data = nfs_readdata_alloc(NFS_SERVER(inode)->rpages); + data = nfs_readdata_alloc(NFS_SERVER(inode)->rsize); if (!data) goto out_bad; diff -urN linux-2.6.18-rc6/fs/nfs/write.c linux-2.6.18-rc7/fs/nfs/write.c --- linux-2.6.18-rc6/fs/nfs/write.c 2006-09-13 03:16:00.710641941 +0000 +++ linux-2.6.18-rc7/fs/nfs/write.c 2006-09-13 03:16:05.891201240 +0000 @@ -90,22 +90,13 @@ static DECLARE_WAIT_QUEUE_HEAD(nfs_write_congestion); -struct nfs_write_data *nfs_commit_alloc(unsigned int pagecount) +struct nfs_write_data *nfs_commit_alloc(void) { struct nfs_write_data *p = mempool_alloc(nfs_commit_mempool, SLAB_NOFS); if (p) { memset(p, 0, sizeof(*p)); INIT_LIST_HEAD(&p->pages); - if (pagecount <= ARRAY_SIZE(p->page_array)) - p->pagevec = p->page_array; - else { - p->pagevec = kcalloc(pagecount, sizeof(struct page *), GFP_NOFS); - if (!p->pagevec) { - mempool_free(p, nfs_commit_mempool); - p = NULL; - } - } } return p; } @@ -117,13 +108,15 @@ mempool_free(p, nfs_commit_mempool); } -struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount) +struct nfs_write_data *nfs_writedata_alloc(size_t len) { + unsigned int pagecount = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, SLAB_NOFS); if (p) { memset(p, 0, sizeof(*p)); INIT_LIST_HEAD(&p->pages); + p->npages = pagecount; if (pagecount <= ARRAY_SIZE(p->page_array)) p->pagevec = p->page_array; else { @@ -208,7 +201,7 @@ int result, written = 0; struct nfs_write_data *wdata; - wdata = nfs_writedata_alloc(1); + wdata = nfs_writedata_alloc(wsize); if (!wdata) return -ENOMEM; @@ -999,24 +992,24 @@ struct nfs_page *req = nfs_list_entry(head->next); struct page *page = req->wb_page; struct nfs_write_data *data; - unsigned int wsize = NFS_SERVER(inode)->wsize; - unsigned int nbytes, offset; + size_t wsize = NFS_SERVER(inode)->wsize, nbytes; + unsigned int offset; int requests = 0; LIST_HEAD(list); nfs_list_remove_request(req); nbytes = req->wb_bytes; - for (;;) { - data = nfs_writedata_alloc(1); + do { + size_t len = min(nbytes, wsize); + + data = nfs_writedata_alloc(len); if (!data) goto out_bad; list_add(&data->pages, &list); requests++; - if (nbytes <= wsize) - break; - nbytes -= wsize; - } + nbytes -= len; + } while (nbytes != 0); atomic_set(&req->wb_complete, requests); ClearPageError(page); @@ -1070,7 +1063,7 @@ struct nfs_write_data *data; unsigned int count; - data = nfs_writedata_alloc(NFS_SERVER(inode)->wpages); + data = nfs_writedata_alloc(NFS_SERVER(inode)->wsize); if (!data) goto out_bad; @@ -1378,7 +1371,7 @@ struct nfs_write_data *data; struct nfs_page *req; - data = nfs_commit_alloc(NFS_SERVER(inode)->wpages); + data = nfs_commit_alloc(); if (!data) goto out_bad; diff -urN linux-2.6.18-rc6/fs/super.c linux-2.6.18-rc7/fs/super.c --- linux-2.6.18-rc6/fs/super.c 2006-09-13 03:16:00.762647555 +0000 +++ linux-2.6.18-rc7/fs/super.c 2006-09-13 03:16:05.943206855 +0000 @@ -49,6 +49,7 @@ /** * alloc_super - create new superblock + * @type: filesystem type superblock should belong to * * Allocates and initializes a new &struct super_block. alloc_super() * returns a pointer new superblock or %NULL if allocation had failed. diff -urN linux-2.6.18-rc6/fs/xfs/linux-2.6/xfs_aops.c linux-2.6.18-rc7/fs/xfs/linux-2.6/xfs_aops.c --- linux-2.6.18-rc6/fs/xfs/linux-2.6/xfs_aops.c 2006-09-13 03:16:00.774648851 +0000 +++ linux-2.6.18-rc7/fs/xfs/linux-2.6/xfs_aops.c 2006-09-13 03:16:05.955208150 +0000 @@ -1390,11 +1390,19 @@ iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); - ret = blockdev_direct_IO_own_locking(rw, iocb, inode, - iomap.iomap_target->bt_bdev, - iov, offset, nr_segs, - xfs_get_blocks_direct, - xfs_end_io_direct); + if (rw == WRITE) { + ret = blockdev_direct_IO_own_locking(rw, iocb, inode, + iomap.iomap_target->bt_bdev, + iov, offset, nr_segs, + xfs_get_blocks_direct, + xfs_end_io_direct); + } else { + ret = blockdev_direct_IO_no_locking(rw, iocb, inode, + iomap.iomap_target->bt_bdev, + iov, offset, nr_segs, + xfs_get_blocks_direct, + xfs_end_io_direct); + } if (unlikely(ret <= 0 && iocb->private)) xfs_destroy_ioend(iocb->private); diff -urN linux-2.6.18-rc6/fs/xfs/linux-2.6/xfs_lrw.c linux-2.6.18-rc7/fs/xfs/linux-2.6/xfs_lrw.c --- linux-2.6.18-rc6/fs/xfs/linux-2.6/xfs_lrw.c 2006-09-13 03:16:00.778649283 +0000 +++ linux-2.6.18-rc7/fs/xfs/linux-2.6/xfs_lrw.c 2006-09-13 03:16:05.959208582 +0000 @@ -264,7 +264,9 @@ dmflags, &locktype); if (ret) { xfs_iunlock(ip, XFS_IOLOCK_SHARED); - goto unlock_mutex; + if (unlikely(ioflags & IO_ISDIRECT)) + mutex_unlock(&inode->i_mutex); + return ret; } } @@ -272,6 +274,9 @@ bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), -1, FI_REMAPF_LOCKED); + if (unlikely(ioflags & IO_ISDIRECT)) + mutex_unlock(&inode->i_mutex); + xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, (void *)iovp, segs, *offset, ioflags); ret = __generic_file_aio_read(iocb, iovp, segs, offset); @@ -281,10 +286,6 @@ XFS_STATS_ADD(xs_read_bytes, ret); xfs_iunlock(ip, XFS_IOLOCK_SHARED); - -unlock_mutex: - if (unlikely(ioflags & IO_ISDIRECT)) - mutex_unlock(&inode->i_mutex); return ret; } @@ -390,6 +391,8 @@ xfs_inode_t *ip = XFS_BHVTOI(bdp); xfs_mount_t *mp = ip->i_mount; ssize_t ret; + struct inode *inode = outfilp->f_mapping->host; + xfs_fsize_t isize; XFS_STATS_INC(xs_write_calls); if (XFS_FORCED_SHUTDOWN(ip->i_mount)) @@ -416,6 +419,20 @@ if (ret > 0) XFS_STATS_ADD(xs_write_bytes, ret); + isize = i_size_read(inode); + if (unlikely(ret < 0 && ret != -EFAULT && *ppos > isize)) + *ppos = isize; + + if (*ppos > ip->i_d.di_size) { + xfs_ilock(ip, XFS_ILOCK_EXCL); + if (*ppos > ip->i_d.di_size) { + ip->i_d.di_size = *ppos; + i_size_write(inode, *ppos); + ip->i_update_core = 1; + ip->i_update_size = 1; + } + xfs_iunlock(ip, XFS_ILOCK_EXCL); + } xfs_iunlock(ip, XFS_IOLOCK_EXCL); return ret; } diff -urN linux-2.6.18-rc6/fs/xfs/quota/xfs_qm_bhv.c linux-2.6.18-rc7/fs/xfs/quota/xfs_qm_bhv.c --- linux-2.6.18-rc6/fs/xfs/quota/xfs_qm_bhv.c 2006-09-13 03:16:00.786650146 +0000 +++ linux-2.6.18-rc7/fs/xfs/quota/xfs_qm_bhv.c 2006-09-13 03:16:05.967209446 +0000 @@ -203,7 +203,7 @@ if (error || !vnode) return error; - mp = XFS_BHVTOM(bhv); + mp = xfs_vfstom(bhvtovfs(bhv)); ip = xfs_vtoi(vnode); if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)) diff -urN linux-2.6.18-rc6/fs/xfs/xfs_alloc.h linux-2.6.18-rc7/fs/xfs/xfs_alloc.h --- linux-2.6.18-rc6/fs/xfs/xfs_alloc.h 2006-09-13 03:16:00.790650578 +0000 +++ linux-2.6.18-rc7/fs/xfs/xfs_alloc.h 2006-09-13 03:16:05.967209446 +0000 @@ -44,6 +44,26 @@ #define XFS_ALLOC_FLAG_FREEING 0x00000002 /* indicate caller is freeing extents*/ /* + * In order to avoid ENOSPC-related deadlock caused by + * out-of-order locking of AGF buffer (PV 947395), we place + * constraints on the relationship among actual allocations for + * data blocks, freelist blocks, and potential file data bmap + * btree blocks. However, these restrictions may result in no + * actual space allocated for a delayed extent, for example, a data + * block in a certain AG is allocated but there is no additional + * block for the additional bmap btree block due to a split of the + * bmap btree of the file. The result of this may lead to an + * infinite loop in xfssyncd when the file gets flushed to disk and + * all delayed extents need to be actually allocated. To get around + * this, we explicitly set aside a few blocks which will not be + * reserved in delayed allocation. Considering the minimum number of + * needed freelist blocks is 4 fsbs _per AG_, a potential split of file's bmap + * btree requires 1 fsb, so we set the number of set-aside blocks + * to 4 + 4*agcount. + */ +#define XFS_ALLOC_SET_ASIDE(mp) (4 + ((mp)->m_sb.sb_agcount * 4)) + +/* * Argument structure for xfs_alloc routines. * This is turned into a structure to avoid having 20 arguments passed * down several levels of the stack. diff -urN linux-2.6.18-rc6/fs/xfs/xfs_fsops.c linux-2.6.18-rc7/fs/xfs/xfs_fsops.c --- linux-2.6.18-rc6/fs/xfs/xfs_fsops.c 2006-09-13 03:16:00.810652738 +0000 +++ linux-2.6.18-rc7/fs/xfs/xfs_fsops.c 2006-09-13 03:16:05.991212037 +0000 @@ -462,7 +462,7 @@ xfs_icsb_sync_counters_lazy(mp); s = XFS_SB_LOCK(mp); - cnt->freedata = mp->m_sb.sb_fdblocks; + cnt->freedata = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); cnt->freertx = mp->m_sb.sb_frextents; cnt->freeino = mp->m_sb.sb_ifree; cnt->allocino = mp->m_sb.sb_icount; @@ -519,15 +519,19 @@ } mp->m_resblks = request; } else { + __int64_t free; + + free = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); delta = request - mp->m_resblks; - lcounter = mp->m_sb.sb_fdblocks - delta; + lcounter = free - delta; if (lcounter < 0) { /* We can't satisfy the request, just get what we can */ - mp->m_resblks += mp->m_sb.sb_fdblocks; - mp->m_resblks_avail += mp->m_sb.sb_fdblocks; - mp->m_sb.sb_fdblocks = 0; + mp->m_resblks += free; + mp->m_resblks_avail += free; + mp->m_sb.sb_fdblocks = XFS_ALLOC_SET_ASIDE(mp); } else { - mp->m_sb.sb_fdblocks = lcounter; + mp->m_sb.sb_fdblocks = + lcounter + XFS_ALLOC_SET_ASIDE(mp); mp->m_resblks = request; mp->m_resblks_avail += delta; } diff -urN linux-2.6.18-rc6/fs/xfs/xfs_mount.c linux-2.6.18-rc7/fs/xfs/xfs_mount.c --- linux-2.6.18-rc6/fs/xfs/xfs_mount.c 2006-09-13 03:16:00.818653602 +0000 +++ linux-2.6.18-rc7/fs/xfs/xfs_mount.c 2006-09-13 03:16:05.999212901 +0000 @@ -1243,24 +1243,6 @@ xfs_trans_log_buf(tp, bp, first, last); } -/* - * In order to avoid ENOSPC-related deadlock caused by - * out-of-order locking of AGF buffer (PV 947395), we place - * constraints on the relationship among actual allocations for - * data blocks, freelist blocks, and potential file data bmap - * btree blocks. However, these restrictions may result in no - * actual space allocated for a delayed extent, for example, a data - * block in a certain AG is allocated but there is no additional - * block for the additional bmap btree block due to a split of the - * bmap btree of the file. The result of this may lead to an - * infinite loop in xfssyncd when the file gets flushed to disk and - * all delayed extents need to be actually allocated. To get around - * this, we explicitly set aside a few blocks which will not be - * reserved in delayed allocation. Considering the minimum number of - * needed freelist blocks is 4 fsbs, a potential split of file's bmap - * btree requires 1 fsb, so we set the number of set-aside blocks to 8. -*/ -#define SET_ASIDE_BLOCKS 8 /* * xfs_mod_incore_sb_unlocked() is a utility routine common used to apply @@ -1306,7 +1288,8 @@ return 0; case XFS_SBS_FDBLOCKS: - lcounter = (long long)mp->m_sb.sb_fdblocks - SET_ASIDE_BLOCKS; + lcounter = (long long) + mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); if (delta > 0) { /* Putting blocks back */ @@ -1340,7 +1323,7 @@ } } - mp->m_sb.sb_fdblocks = lcounter + SET_ASIDE_BLOCKS; + mp->m_sb.sb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); return 0; case XFS_SBS_FREXTENTS: lcounter = (long long)mp->m_sb.sb_frextents; @@ -2021,7 +2004,8 @@ * when we get near ENOSPC. */ #define XFS_ICSB_INO_CNTR_REENABLE 64 -#define XFS_ICSB_FDBLK_CNTR_REENABLE 512 +#define XFS_ICSB_FDBLK_CNTR_REENABLE(mp) \ + (512 + XFS_ALLOC_SET_ASIDE(mp)) STATIC void xfs_icsb_balance_counter( xfs_mount_t *mp, @@ -2055,7 +2039,7 @@ case XFS_SBS_FDBLOCKS: count = mp->m_sb.sb_fdblocks; resid = do_div(count, weight); - if (count < XFS_ICSB_FDBLK_CNTR_REENABLE) + if (count < XFS_ICSB_FDBLK_CNTR_REENABLE(mp)) goto out; break; default: @@ -2110,11 +2094,11 @@ case XFS_SBS_FDBLOCKS: BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0); - lcounter = icsbp->icsb_fdblocks; + lcounter = icsbp->icsb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); lcounter += delta; if (unlikely(lcounter < 0)) goto slow_path; - icsbp->icsb_fdblocks = lcounter; + icsbp->icsb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); break; default: BUG(); diff -urN linux-2.6.18-rc6/fs/xfs/xfs_vfsops.c linux-2.6.18-rc7/fs/xfs/xfs_vfsops.c --- linux-2.6.18-rc6/fs/xfs/xfs_vfsops.c 2006-09-13 03:16:00.826654465 +0000 +++ linux-2.6.18-rc7/fs/xfs/xfs_vfsops.c 2006-09-13 03:16:06.003213333 +0000 @@ -811,7 +811,8 @@ statp->f_bsize = sbp->sb_blocksize; lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0; statp->f_blocks = sbp->sb_dblocks - lsize; - statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks; + statp->f_bfree = statp->f_bavail = + sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); fakeinos = statp->f_bfree << sbp->sb_inopblog; #if XFS_BIG_INUMS fakeinos += mp->m_inoadd; diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-cpld.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-cpld.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-cpld.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-cpld.h 2006-09-13 03:16:06.043217652 +0000 @@ -9,9 +9,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * */ #ifndef __ASM_ARCH_ANUBISCPLD_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-irq.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-irq.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-irq.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-irq.h 2006-09-13 03:16:06.043217652 +0000 @@ -9,9 +9,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - */ +*/ #ifndef __ASM_ARCH_ANUBISIRQ_H #define __ASM_ARCH_ANUBISIRQ_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-map.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-map.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/anubis-map.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/anubis-map.h 2006-09-13 03:16:06.043217652 +0000 @@ -9,8 +9,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: */ /* needs arch/map.h including with this */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/audio.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/audio.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/audio.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/audio.h 2006-09-13 03:16:06.043217652 +0000 @@ -9,10 +9,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 20-Nov-2004 BJD Created file - * 07-Mar-2005 BJD Added suspend/resume calls */ #ifndef __ASM_ARCH_AUDIO_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-cpld.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-cpld.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-cpld.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-cpld.h 2006-09-13 03:16:06.043217652 +0000 @@ -8,11 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 25-May-2003 BJD Created file, added CTRL1 registers - * 30-Aug-2004 BJD Updated definitions from 2.4.26 port - * 30-Aug-2004 BJD Added CTRL3 and CTRL4 definitions */ #ifndef __ASM_ARCH_BASTCPLD_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-irq.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-irq.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-irq.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-irq.h 2006-09-13 03:16:06.043217652 +0000 @@ -8,11 +8,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 14-Sep-2004 BJD Fixed IRQ_USBOC definition - * 06-Jan-2003 BJD Linux 2.6.0 version - */ +*/ #ifndef __ASM_ARCH_BASTIRQ_H #define __ASM_ARCH_BASTIRQ_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-map.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-map.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-map.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-map.h 2006-09-13 03:16:06.043217652 +0000 @@ -8,10 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics from arch/map.h - * 12-Mar-2004 BJD Fixed header include protection */ /* needs arch/map.h including with this */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-pmu.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-pmu.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/bast-pmu.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/bast-pmu.h 2006-09-13 03:16:06.043217652 +0000 @@ -9,9 +9,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 08-Oct-2003 BJD Initial creation */ #ifndef __ASM_ARCH_BASTPMU_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/debug-macro.S linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/debug-macro.S --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/debug-macro.S 2006-09-13 03:16:00.862658352 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/debug-macro.S 2006-09-13 03:16:06.043217652 +0000 @@ -10,9 +10,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Modifications: - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA */ #include diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/fb.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/fb.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/fb.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/fb.h 2006-09-13 03:16:06.043217652 +0000 @@ -7,13 +7,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * - * Changelog: - * 07-Sep-2004 RTP Created file - * 03-Nov-2004 BJD Updated and minor cleanups - * 03-Aug-2005 RTP Renamed to fb.h - * 26-Oct-2005 BJD Changed name of platdata init */ #ifndef __ASM_ARM_FB_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/hardware.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/hardware.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/hardware.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/hardware.h 2006-09-13 03:16:06.043217652 +0000 @@ -8,16 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 21-May-2003 BJD Created file - * 06-Jun-2003 BJD Added CPU frequency settings - * 03-Sep-2003 BJD Linux v2.6 support - * 12-Mar-2004 BJD Fixed include protection, fixed type of clock vars - * 14-Sep-2004 BJD Added misccr and getpin to gpio - * 01-Oct-2004 BJD Added the new gpio functions - * 16-Oct-2004 BJD Removed the clock variables - * 15-Jan-2006 LCVR Added s3c2400_gpio_getirq() */ #ifndef __ASM_ARCH_HARDWARE_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/idle.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/idle.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/idle.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/idle.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,10 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 CPU Idle controls - * - * Changelog: - * 28-Oct-2004 BJD Initial version - * */ #ifndef __ASM_ARCH_IDLE_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/iic.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/iic.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/iic.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/iic.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,10 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 05-Oct-2004 BJD Created file - * 19-Oct-2004 BJD Updated for s3c2440 */ #ifndef __ASM_ARCH_IIC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/io.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/io.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/io.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/io.h 2006-09-13 03:16:06.047218084 +0000 @@ -4,13 +4,7 @@ * * Copyright (C) 1997 Russell King * (C) 2003 Simtec Electronics - * - * Modifications: - * 06-Dec-1997 RMK Created. - * 02-Sep-2003 BJD Modified for S3C2410 - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 13-Oct-2005 BJD Fixed problems with LDRH/STRH offset range - */ +*/ #ifndef __ASM_ARM_ARCH_IO_H #define __ASM_ARM_ARCH_IO_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/irqs.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/irqs.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/irqs.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/irqs.h 2006-09-13 03:16:06.047218084 +0000 @@ -6,14 +6,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 12-May-2003 BJD Created file - * 08-Jan-2003 BJD Linux 2.6.0 version, moved BAST bits out - * 12-Mar-2004 BJD Fixed bug in header protection - * 10-Feb-2005 BJD Added camera IRQ from guillaume.gourat@nexvision.tv - * 28-Feb-2005 BJD Updated s3c2440 IRQs - */ +*/ #ifndef __ASM_ARCH_IRQS_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/map.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/map.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/map.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/map.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,13 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 12-May-2003 BJD Created file - * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics out - * 10-Feb-2005 BJD Added CAMIF definition from guillaume.gourat@nexvision.tv - * 10-Mar-2005 LCVR Added support to S3C2400, changed {VA,SZ} names - * 15-Jan-2006 LCVR Added S3C24XX_PA macros for common S3C24XX resources */ #ifndef __ASM_ARCH_MAP_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/memory.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/memory.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/memory.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/memory.h 2006-09-13 03:16:06.047218084 +0000 @@ -1,6 +1,4 @@ -/* - * linux/include/asm-arm/arch-s3c2410/memory.h - * +/* linux/include/asm-arm/arch-s3c2410/memory.h * from linux/include/asm-arm/arch-rpc/memory.h * * Copyright (C) 1996,1997,1998 Russell King. @@ -8,16 +6,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 20-Oct-1996 RMK Created - * 31-Dec-1997 RMK Fixed definitions to reduce warnings - * 11-Jan-1998 RMK Uninlined to reduce hits on cache - * 08-Feb-1998 RMK Added __virt_to_bus and __bus_to_virt - * 21-Mar-1999 RMK Renamed to memory.h - * RMK Added TASK_SIZE and PAGE_OFFSET - * 05-Apr-2004 BJD Copied and altered for arch-s3c2410 - * 17-Mar-2005 LCVR Modified for S3C2400 */ #ifndef __ASM_ARCH_MEMORY_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/nand.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/nand.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/nand.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/nand.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,9 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 23-Sep-2004 BJD Created file */ /* struct s3c2410_nand_set diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/osiris-map.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/osiris-map.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/osiris-map.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/osiris-map.h 2006-09-13 03:16:06.047218084 +0000 @@ -9,8 +9,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: */ /* needs arch/map.h including with this */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-adc.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-adc.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-adc.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-adc.h 2006-09-13 03:16:06.047218084 +0000 @@ -7,9 +7,6 @@ * published by the Free Software Foundation. * * S3C2410 ADC registers - * - * Changelog: - * 27-09-2004 SAH Created file */ #ifndef __ASM_ARCH_REGS_ADC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-clock.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-clock.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-clock.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-clock.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,18 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 clock register definitions - * - * Changelog: - * 18-Aug-2004 Ben Dooks Added 2440 definitions - * 08-Aug-2004 Herbert Pötzl Added CLKCON definitions - * 19-06-2003 Ben Dooks Created file - * 12-03-2004 Ben Dooks Updated include protection - * 29-Sep-2004 Ben Dooks Fixed usage for assembly inclusion - * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat) - * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA - * 27-Aug-2005 Ben Dooks Add clock-slow info - * 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat) - * 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat) */ #ifndef __ASM_ARM_REGS_CLOCK diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-gpio.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-gpio.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-gpio.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-gpio.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,21 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 GPIO register definitions - * - * Changelog: - * 19-06-2003 BJD Created file - * 23-06-2003 BJD Updated GSTATUS registers - * 12-03-2004 BJD Updated include protection - * 20-07-2004 BJD Added GPIO pin numbers, added Port A definitions - * 04-10-2004 BJD Fixed number of bugs, added EXT IRQ filter defs - * 17-10-2004 BJD Added GSTATUS1 register definitions - * 18-11-2004 BJD Fixed definitions of GPE3, GPE4, GPE5 and GPE6 - * 18-11-2004 BJD Added S3C2440 AC97 controls - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 28-Mar-2005 LCVR Fixed definition of GPB10 - * 26-Oct-2005 BJD Added generic configuration types - * 27-Nov-2005 LCVR Added definitions to S3C2400 registers - * 15-Jan-2006 LCVR Written S3C24XX_GPIO_BASE() macro */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-gpioj.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-gpioj.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-gpioj.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-gpioj.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,10 +8,6 @@ * published by the Free Software Foundation. * * S3C2440 GPIO J register definitions - * - * Changelog: - * 11-Aug-2004 BJD Created file - * 10-Feb-2005 BJD Fix GPJ12 definition (Guillaume Gourat) */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-iic.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-iic.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-iic.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-iic.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,10 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 I2C Controller - * - * Changelog: - * 03-Oct-2004 BJD Initial include for Linux - * 08-Nov-2004 BJD Added S3C2440 filter register */ #ifndef __ASM_ARCH_REGS_IIC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-iis.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-iis.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-iis.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-iis.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,17 +8,7 @@ * published by the Free Software Foundation. * * S3C2410 IIS register definition - * - * Changelog: - * 19-06-2003 BJD Created file - * 26-06-2003 BJD Finished off definitions for register addresses - * 12-03-2004 BJD Updated include protection - * 07-03-2005 BJD Added FIFO size flags and S3C2440 MPLL - * 05-04-2005 LCVR Added IISFCON definitions for the S3C2400 - * 18-07-2005 DA Change IISCON_MPLL to IISMOD_MPLL - * Correct IISMOD_256FS and IISMOD_384FS - * Add IISCON_PSCEN - */ +*/ #ifndef __ASM_ARCH_REGS_IIS_H #define __ASM_ARCH_REGS_IIS_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-irq.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-irq.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-irq.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-irq.h 2006-09-13 03:16:06.047218084 +0000 @@ -6,14 +6,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * - * - * Changelog: - * 19-06-2003 BJD Created file - * 12-03-2004 BJD Updated include protection - * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - */ +*/ #ifndef ___ASM_ARCH_REGS_IRQ_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-lcd.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-lcd.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-lcd.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-lcd.h 2006-09-13 03:16:06.047218084 +0000 @@ -6,14 +6,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * - * - * Changelog: - * 12-06-2003 BJD Created file - * 26-06-2003 BJD Updated LCDCON register definitions - * 12-03-2004 BJD Updated include protection - * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-mem.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-mem.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-mem.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-mem.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,12 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 Memory Control register definitions - * - * Changelog: - * 29-Sep-2004 BJD Initial include for Linux - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA - * 04-Apr-2005 LCVR Added S3C2400 DRAM/BANKSIZE_MASK definitions - * */ #ifndef __ASM_ARM_MEMREGS_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-nand.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-nand.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-nand.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-nand.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,10 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 NAND register definitions - * - * Changelog: - * 18-Aug-2004 BJD Copied file from 2.4 and updated - * 01-May-2005 BJD Added definitions for s3c2440 controller */ #ifndef __ASM_ARM_REGS_NAND diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-rtc.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-rtc.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-rtc.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-rtc.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,11 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 Internal RTC register definition - * - * Changelog: - * 19-06-2003 BJD Created file - * 12-03-2004 BJD Updated include protection - * 15-01-2005 LCVR Changed S3C2410_VA to S3C24XX_VA (s3c2400 support) */ #ifndef __ASM_ARCH_REGS_RTC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-sdi.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-sdi.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-09-13 03:16:06.047218084 +0000 @@ -8,11 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 MMC/SDIO register definitions - * - * Changelog: - * 18-Aug-2004 Ben Dooks Created initial file - * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates - * 29-Nov-2004 Ben Dooks Updated Koen's patch */ #ifndef __ASM_ARM_REGS_SDI diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-serial.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-serial.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-serial.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-serial.h 2006-09-13 03:16:06.047218084 +0000 @@ -27,10 +27,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Modifications: - * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA (s3c2400 support) - */ +*/ #ifndef __ASM_ARM_REGS_SERIAL_H #define __ASM_ARM_REGS_SERIAL_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-spi.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-spi.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-spi.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-spi.h 2006-09-13 03:16:06.047218084 +0000 @@ -7,13 +7,7 @@ * published by the Free Software Foundation. * * S3C2410 SPI register definition - * - * Changelog: - * 20-04-2004 KF Created file - * 04-10-2004 BJD Removed VA address (no longer mapped) - * tidied file for submission - * 03-04-2005 LCVR Added S3C2400_SPPIN_nCS definition - */ +*/ #ifndef __ASM_ARCH_REGS_SPI_H #define __ASM_ARCH_REGS_SPI_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-timer.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-timer.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-timer.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-timer.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,13 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 Timer configuration - * - * Changelog: - * 05-06-2003 BJD Created file - * 26-06-2003 BJD Added more timer definitions to mux / control - * 12-03-2004 BJD Updated include protection - * 10-02-2005 BJD Added S3C2410_TCFG1_MUX4_SHIFT (Guillaume Gourat) - * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-udc.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-udc.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-udc.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-udc.h 2006-09-13 03:16:06.051218516 +0000 @@ -6,13 +6,7 @@ * 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. - * - * Changelog: - * 01-08-2004 Initial creation - * 12-09-2004 Cleanup for submission - * 24-10-2004 Fixed S3C2410_UDC_MAXP_REG definition - * 10-03-2005 Changed S3C2410_VA to S3C24XX_VA - */ +*/ #ifndef __ASM_ARCH_REGS_UDC_H #define __ASM_ARCH_REGS_UDC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-watchdog.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-watchdog.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/regs-watchdog.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/regs-watchdog.h 2006-09-13 03:16:06.051218516 +0000 @@ -1,4 +1,4 @@ -/* linux/include/asm/arch-s3c2410/regs0watchdog.h +/* linux/include/asm/arch-s3c2410/regs-watchdog.h * * Copyright (c) 2003 Simtec Electronics * http://www.simtec.co.uk/products/SWLINUX/ @@ -8,11 +8,6 @@ * published by the Free Software Foundation. * * S3C2410 Watchdog timer control - * - * Changelog: - * 21-06-2003 BJD Created file - * 12-03-2004 BJD Updated include protection - * 10-03-2005 LCVR Changed S3C2410_VA to S3C24XX_VA */ diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/system.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/system.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/system.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/system.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,14 +8,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 12-May-2003 BJD Created file - * 14-May-2003 BJD Removed idle to aid debugging - * 12-Jun-2003 BJD Added reset via watchdog - * 04-Sep-2003 BJD Moved to v2.6 - * 28-Oct-2004 BJD Added over-ride for idle, and fixed reset panic() - */ +*/ #include #include diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/timex.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/timex.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/timex.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/timex.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,12 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 02-Sep-2003 BJD Created file - * 05-Jan-2004 BJD Updated for Linux 2.6.0 - * 22-Nov-2004 BJD Fixed CLOCK_TICK_RATE - * 10-Jan-2004 BJD Removed s3c2410_clock_tick_rate */ #ifndef __ASM_ARCH_TIMEX_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/uncompress.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/uncompress.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/uncompress.h 2006-09-13 03:16:00.866658784 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/uncompress.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,15 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 22-May-2003 BJD Created - * 08-Sep-2003 BJD Moved to linux v2.6 - * 12-Mar-2004 BJD Updated header protection - * 12-Oct-2004 BJD Take account of debug uart configuration - * 15-Nov-2004 BJD Fixed uart configuration - * 22-Feb-2005 BJD Added watchdog to uncompress - * 04-Apr-2005 LCVR Added support to S3C2400 (no cpuid at GSTATUS1) */ #ifndef __ASM_ARCH_UNCOMPRESS_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/usb-control.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/usb-control.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/usb-control.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/usb-control.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,11 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 11-Sep-2004 BJD Created file - * 21-Sep-2004 BJD Updated port info - * 09-Aug-2005 BJD Renamed s3c2410_report_oc s3c2410_usb_report_oc */ #ifndef __ASM_ARCH_USBCONTROL_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vmalloc.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vmalloc.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vmalloc.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vmalloc.h 2006-09-13 03:16:06.051218516 +0000 @@ -10,11 +10,7 @@ * published by the Free Software Foundation. * * S3C2410 vmalloc definition - * - * Changelog: - * 12-Mar-2004 BJD Fixed header, added include protection - * 12=Mar-2004 BJD Fixed VMALLOC_END definitions - */ +*/ #ifndef __ASM_ARCH_VMALLOC_H #define __ASM_ARCH_VMALLOC_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-cpld.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-cpld.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-cpld.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-cpld.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,10 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 25-May-2003 BJD Created file, added CTRL1 registers - * 19-Mar-2004 BJD Added VR1000 CPLD definitions */ #ifndef __ASM_ARCH_VR1000CPLD_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-irq.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-irq.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-irq.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-irq.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,11 +8,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 06-Jan-2003 BJD Linux 2.6.0 version - * 19-Mar-2004 BJD Updates for VR1000 - */ +*/ #ifndef __ASM_ARCH_VR1000IRQ_H #define __ASM_ARCH_VR1000IRQ_H diff -urN linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-map.h linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-map.h --- linux-2.6.18-rc6/include/asm-arm/arch-s3c2410/vr1000-map.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-arm/arch-s3c2410/vr1000-map.h 2006-09-13 03:16:06.051218516 +0000 @@ -8,12 +8,6 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Changelog: - * 06-Jan-2003 BJD Linux 2.6.0 version, split specifics from arch/map.h - * 12-Mar-2004 BJD Fixed header include protection - * 19-Mar-2004 BJD Copied to VR1000 machine headers. - * 19-Jan-2005 BJD Updated map definitions */ /* needs arch/map.h including with this */ diff -urN linux-2.6.18-rc6/include/asm-arm/spinlock.h linux-2.6.18-rc7/include/asm-arm/spinlock.h --- linux-2.6.18-rc6/include/asm-arm/spinlock.h 2006-09-13 03:16:00.874659648 +0000 +++ linux-2.6.18-rc7/include/asm-arm/spinlock.h 2006-09-13 03:16:06.059219380 +0000 @@ -201,7 +201,7 @@ static inline int __raw_read_trylock(raw_rwlock_t *rw) { - unsigned long tmp tmp2 = 1; + unsigned long tmp, tmp2 = 1; __asm__ __volatile__( "1: ldrex %0, [%2]\n" diff -urN linux-2.6.18-rc6/include/asm-generic/audit_read.h linux-2.6.18-rc7/include/asm-generic/audit_read.h --- linux-2.6.18-rc6/include/asm-generic/audit_read.h 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-generic/audit_read.h 2006-09-13 03:16:06.075221107 +0000 @@ -0,0 +1,8 @@ +__NR_readlink, +__NR_quotactl, +__NR_listxattr, +__NR_llistxattr, +__NR_flistxattr, +__NR_getxattr, +__NR_lgetxattr, +__NR_fgetxattr, diff -urN linux-2.6.18-rc6/include/asm-generic/audit_write.h linux-2.6.18-rc7/include/asm-generic/audit_write.h --- linux-2.6.18-rc6/include/asm-generic/audit_write.h 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-generic/audit_write.h 2006-09-13 03:16:06.075221107 +0000 @@ -0,0 +1,11 @@ +#include +__NR_acct, +__NR_swapon, +__NR_quotactl, +__NR_truncate, +#ifdef __NR_truncate64 +__NR_truncate64, +#endif +#ifdef __NR_bind +__NR_bind, /* bind can affect fs object only in one way... */ +#endif diff -urN linux-2.6.18-rc6/include/asm-i386/Kbuild linux-2.6.18-rc7/include/asm-i386/Kbuild --- linux-2.6.18-rc6/include/asm-i386/Kbuild 2006-09-13 03:16:00.894661808 +0000 +++ linux-2.6.18-rc7/include/asm-i386/Kbuild 2006-09-13 03:16:06.079221539 +0000 @@ -1,5 +1,5 @@ include include/asm-generic/Kbuild.asm -header-y += boot.h cpufeature.h debugreg.h ldt.h setup.h ucontext.h +header-y += boot.h debugreg.h ldt.h setup.h ucontext.h unifdef-y += mtrr.h vm86.h diff -urN linux-2.6.18-rc6/include/asm-ia64/mman.h linux-2.6.18-rc7/include/asm-ia64/mman.h --- linux-2.6.18-rc6/include/asm-ia64/mman.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-ia64/mman.h 2006-09-13 03:16:06.099223698 +0000 @@ -22,4 +22,12 @@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check ia64_mmap_check +int ia64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* _ASM_IA64_MMAN_H */ diff -urN linux-2.6.18-rc6/include/asm-ia64/unistd.h linux-2.6.18-rc7/include/asm-ia64/unistd.h --- linux-2.6.18-rc6/include/asm-ia64/unistd.h 2006-09-13 03:16:00.922664831 +0000 +++ linux-2.6.18-rc7/include/asm-ia64/unistd.h 2006-09-13 03:16:06.107224562 +0000 @@ -286,8 +286,7 @@ /* 1294, 1295 reserved for pselect/ppoll */ #define __NR_unshare 1296 #define __NR_splice 1297 -#define __NR_set_robust_list 1298 -#define __NR_get_robust_list 1299 +/* 1298, 1299 reserved for set_robust_list/get_robust_list */ #define __NR_sync_file_range 1300 #define __NR_tee 1301 #define __NR_vmsplice 1302 diff -urN linux-2.6.18-rc6/include/asm-sh/page.h linux-2.6.18-rc7/include/asm-sh/page.h --- linux-2.6.18-rc6/include/asm-sh/page.h 2006-09-13 03:16:01.018675196 +0000 +++ linux-2.6.18-rc7/include/asm-sh/page.h 2006-09-13 03:16:06.203234928 +0000 @@ -104,7 +104,7 @@ /* PFN start number, because of __MEMORY_START */ #define PFN_START (__MEMORY_START >> PAGE_SHIFT) -#define ARCH_PFN_OFFSET (FPN_START) +#define ARCH_PFN_OFFSET (PFN_START) #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define pfn_valid(pfn) (((pfn) - PFN_START) < max_mapnr) #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) diff -urN linux-2.6.18-rc6/include/asm-sh64/bug.h linux-2.6.18-rc7/include/asm-sh64/bug.h --- linux-2.6.18-rc6/include/asm-sh64/bug.h 2006-09-13 03:16:01.018675196 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/bug.h 2006-09-13 03:16:06.207235360 +0000 @@ -1,7 +1,7 @@ #ifndef __ASM_SH64_BUG_H #define __ASM_SH64_BUG_H - +#ifdef CONFIG_BUG /* * Tell the user there is some problem, then force a segfault (in process * context) or a panic (interrupt context). @@ -11,17 +11,9 @@ *(volatile int *)0 = 0; \ } while (0) -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) +#define HAVE_ARCH_BUG +#endif -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#include #endif /* __ASM_SH64_BUG_H */ - diff -urN linux-2.6.18-rc6/include/asm-sh64/byteorder.h linux-2.6.18-rc7/include/asm-sh64/byteorder.h --- linux-2.6.18-rc6/include/asm-sh64/byteorder.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/byteorder.h 2006-09-13 03:16:06.207235360 +0000 @@ -14,7 +14,7 @@ #include -static __inline__ __const__ __u32 ___arch__swab32(__u32 x) +static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) { __asm__("byterev %0, %0\n\t" "shari %0, 32, %0" @@ -23,7 +23,7 @@ return x; } -static __inline__ __const__ __u16 ___arch__swab16(__u16 x) +static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) { __asm__("byterev %0, %0\n\t" "shari %0, 48, %0" diff -urN linux-2.6.18-rc6/include/asm-sh64/dma-mapping.h linux-2.6.18-rc7/include/asm-sh64/dma-mapping.h --- linux-2.6.18-rc6/include/asm-sh64/dma-mapping.h 2006-09-13 03:16:01.018675196 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/dma-mapping.h 2006-09-13 03:16:06.207235360 +0000 @@ -126,22 +126,30 @@ static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir) - __attribute__ ((alias("dma_sync_single"))); +{ + dma_sync_single(dev, dma_handle, size, dir); +} static inline void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir) - __attribute__ ((alias("dma_sync_single"))); +{ + dma_sync_single(dev, dma_handle, size, dir); +} static inline void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) - __attribute__ ((alias("dma_sync_sg"))); +{ + dma_sync_sg(dev, sg, nelems, dir); +} static inline void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) - __attribute__ ((alias("dma_sync_sg"))); +{ + dma_sync_sg(dev, sg, nelems, dir); +} static inline int dma_get_cache_alignment(void) { diff -urN linux-2.6.18-rc6/include/asm-sh64/io.h linux-2.6.18-rc7/include/asm-sh64/io.h --- linux-2.6.18-rc6/include/asm-sh64/io.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/io.h 2006-09-13 03:16:06.207235360 +0000 @@ -123,6 +123,13 @@ void outsl(unsigned long port, const void *addr, unsigned long count); void insl(unsigned long port, void *addr, unsigned long count); +#define __raw_readb readb +#define __raw_readw readw +#define __raw_readl readl +#define __raw_writeb writeb +#define __raw_writew writew +#define __raw_writel writel + void memcpy_toio(void __iomem *to, const void *from, long count); void memcpy_fromio(void *to, void __iomem *from, long count); diff -urN linux-2.6.18-rc6/include/asm-sh64/ptrace.h linux-2.6.18-rc7/include/asm-sh64/ptrace.h --- linux-2.6.18-rc6/include/asm-sh64/ptrace.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/ptrace.h 2006-09-13 03:16:06.207235360 +0000 @@ -28,7 +28,7 @@ #ifdef __KERNEL__ #define user_mode(regs) (((regs)->sr & 0x40000000)==0) #define instruction_pointer(regs) ((regs)->pc) -#define profile_pc(regs) instruction_pointer(regs) +#define profile_pc(regs) ((unsigned long)instruction_pointer(regs)) extern void show_regs(struct pt_regs *); #endif diff -urN linux-2.6.18-rc6/include/asm-sh64/system.h linux-2.6.18-rc7/include/asm-sh64/system.h --- linux-2.6.18-rc6/include/asm-sh64/system.h 2006-09-13 03:16:01.022675628 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/system.h 2006-09-13 03:16:06.207235360 +0000 @@ -64,7 +64,7 @@ #define smp_read_barrier_depends() do { } while (0) #endif /* CONFIG_SMP */ -#define set_rmb(var, value) do { xchg(&var, value); } while (0) +#define set_rmb(var, value) do { (void)xchg(&var, value); } while (0) #define set_mb(var, value) set_rmb(var, value) /* Interrupt Control */ diff -urN linux-2.6.18-rc6/include/asm-sh64/uaccess.h linux-2.6.18-rc7/include/asm-sh64/uaccess.h --- linux-2.6.18-rc6/include/asm-sh64/uaccess.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sh64/uaccess.h 2006-09-13 03:16:06.207235360 +0000 @@ -128,25 +128,20 @@ #define __get_user_nocheck(x,ptr,size) \ ({ \ - long __gu_addr = (long)(ptr); \ - long __gu_err; \ - __typeof(*(ptr)) __gu_val; \ - __asm__ ("":"=r" (__gu_val)); \ - __asm__ ("":"=r" (__gu_err)); \ - __get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \ - (x) = (__typeof__(*(ptr))) __gu_val; \ + long __gu_err, __gu_val; \ + __get_user_size((void *)&__gu_val, (long)(ptr), \ + (size), __gu_err); \ + (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ }) #define __get_user_check(x,ptr,size) \ ({ \ long __gu_addr = (long)(ptr); \ - long __gu_err = -EFAULT; \ - __typeof(*(ptr)) __gu_val; \ - __asm__ ("":"=r" (__gu_val)); \ - __asm__ ("":"=r" (__gu_err)); \ + long __gu_err = -EFAULT, __gu_val; \ if (__access_ok(__gu_addr, (size))) \ - __get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \ + __get_user_size((void *)&__gu_val, __gu_addr, \ + (size), __gu_err); \ (x) = (__typeof__(*(ptr))) __gu_val; \ __gu_err; \ }) diff -urN linux-2.6.18-rc6/include/asm-sparc/mman.h linux-2.6.18-rc7/include/asm-sparc/mman.h --- linux-2.6.18-rc6/include/asm-sparc/mman.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sparc/mman.h 2006-09-13 03:16:06.211235792 +0000 @@ -35,4 +35,12 @@ #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check sparc_mmap_check +int sparc_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* __SPARC_MMAN_H__ */ diff -urN linux-2.6.18-rc6/include/asm-sparc64/mman.h linux-2.6.18-rc7/include/asm-sparc64/mman.h --- linux-2.6.18-rc6/include/asm-sparc64/mman.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/asm-sparc64/mman.h 2006-09-13 03:16:06.219236655 +0000 @@ -35,4 +35,12 @@ #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check sparc64_mmap_check +int sparc64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* __SPARC64_MMAN_H__ */ diff -urN linux-2.6.18-rc6/include/linux/atmdev.h linux-2.6.18-rc7/include/linux/atmdev.h --- linux-2.6.18-rc6/include/linux/atmdev.h 2006-09-13 03:16:01.058679515 +0000 +++ linux-2.6.18-rc7/include/linux/atmdev.h 2006-09-13 03:16:06.243239247 +0000 @@ -7,7 +7,6 @@ #define LINUX_ATMDEV_H -#include #include #include #include @@ -210,6 +209,7 @@ #ifdef __KERNEL__ +#include #include /* wait_queue_head_t */ #include /* struct timeval */ #include diff -urN linux-2.6.18-rc6/include/linux/audit.h linux-2.6.18-rc7/include/linux/audit.h --- linux-2.6.18-rc6/include/linux/audit.h 2006-09-13 03:16:01.058679515 +0000 +++ linux-2.6.18-rc7/include/linux/audit.h 2006-09-13 03:16:06.243239247 +0000 @@ -132,6 +132,10 @@ #define AUDIT_CLASS_DIR_WRITE_32 1 #define AUDIT_CLASS_CHATTR 2 #define AUDIT_CLASS_CHATTR_32 3 +#define AUDIT_CLASS_READ 4 +#define AUDIT_CLASS_READ_32 5 +#define AUDIT_CLASS_WRITE 6 +#define AUDIT_CLASS_WRITE_32 7 /* This bitmask is used to validate user input. It represents all bits that * are currently used in an audit field constant understood by the kernel. @@ -177,6 +181,7 @@ #define AUDIT_EXIT 103 #define AUDIT_SUCCESS 104 /* exit >= 0; value ignored */ #define AUDIT_WATCH 105 +#define AUDIT_PERM 106 #define AUDIT_ARG0 200 #define AUDIT_ARG1 (AUDIT_ARG0+1) @@ -252,6 +257,11 @@ #define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE) #define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) +#define AUDIT_PERM_EXEC 1 +#define AUDIT_PERM_WRITE 2 +#define AUDIT_PERM_READ 4 +#define AUDIT_PERM_ATTR 8 + struct audit_status { __u32 mask; /* Bit mask for valid entries */ __u32 enabled; /* 1 = enabled, 0 = disabled */ @@ -314,6 +324,7 @@ #define AUDITSC_FAILURE 2 #define AUDITSC_RESULT(x) ( ((long)(x))<0?AUDITSC_FAILURE:AUDITSC_SUCCESS ) extern int __init audit_register_class(int class, unsigned *list); +extern int audit_classify_syscall(int abi, unsigned syscall); #ifdef CONFIG_AUDITSYSCALL /* These are defined in auditsc.c */ /* Public API */ diff -urN linux-2.6.18-rc6/include/linux/hrtimer.h linux-2.6.18-rc7/include/linux/hrtimer.h --- linux-2.6.18-rc6/include/linux/hrtimer.h 2006-09-13 03:16:01.074681243 +0000 +++ linux-2.6.18-rc7/include/linux/hrtimer.h 2006-09-13 03:16:06.263241406 +0000 @@ -80,6 +80,7 @@ * @get_softirq_time: function to retrieve the current time from the softirq * @curr_timer: the timer which is executing a callback right now * @softirq_time: the time when running the hrtimer queue in the softirq + * @lock_key: the lock_class_key for use with lockdep */ struct hrtimer_base { clockid_t index; diff -urN linux-2.6.18-rc6/include/linux/ktime.h linux-2.6.18-rc7/include/linux/ktime.h --- linux-2.6.18-rc6/include/linux/ktime.h 2006-09-13 03:16:01.090682970 +0000 +++ linux-2.6.18-rc7/include/linux/ktime.h 2006-09-13 03:16:06.275242702 +0000 @@ -56,7 +56,8 @@ #endif } ktime_t; -#define KTIME_MAX (~((u64)1 << 63)) +#define KTIME_MAX ((s64)~((u64)1 << 63)) +#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) /* * ktime_t definitions when using the 64-bit scalar representation: @@ -73,6 +74,10 @@ */ static inline ktime_t ktime_set(const long secs, const unsigned long nsecs) { +#if (BITS_PER_LONG == 64) + if (unlikely(secs >= KTIME_SEC_MAX)) + return (ktime_t){ .tv64 = KTIME_MAX }; +#endif return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs }; } diff -urN linux-2.6.18-rc6/include/linux/mmc/host.h linux-2.6.18-rc7/include/linux/mmc/host.h --- linux-2.6.18-rc6/include/linux/mmc/host.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/linux/mmc/host.h 2006-09-13 03:16:06.279243134 +0000 @@ -77,7 +77,7 @@ struct device *dev; struct class_device class_dev; int index; - struct mmc_host_ops *ops; + const struct mmc_host_ops *ops; unsigned int f_min; unsigned int f_max; u32 ocr_avail; diff -urN linux-2.6.18-rc6/include/linux/mmc/mmc.h linux-2.6.18-rc7/include/linux/mmc/mmc.h --- linux-2.6.18-rc6/include/linux/mmc/mmc.h 2006-06-18 01:49:35.000000000 +0000 +++ linux-2.6.18-rc7/include/linux/mmc/mmc.h 2006-09-13 03:16:06.279243134 +0000 @@ -105,6 +105,8 @@ extern int mmc_wait_for_app_cmd(struct mmc_host *, unsigned int, struct mmc_command *, int); +extern void mmc_set_data_timeout(struct mmc_data *, const struct mmc_card *, int); + extern int __mmc_claim_host(struct mmc_host *host, struct mmc_card *card); static inline void mmc_claim_host(struct mmc_host *host) diff -urN linux-2.6.18-rc6/include/linux/nfs_fs.h linux-2.6.18-rc7/include/linux/nfs_fs.h --- linux-2.6.18-rc6/include/linux/nfs_fs.h 2006-09-13 03:16:01.102684266 +0000 +++ linux-2.6.18-rc7/include/linux/nfs_fs.h 2006-09-13 03:16:06.287243997 +0000 @@ -427,7 +427,7 @@ extern void nfs_writedata_release(void *); #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) -struct nfs_write_data *nfs_commit_alloc(unsigned int pagecount); +struct nfs_write_data *nfs_commit_alloc(void); void nfs_commit_free(struct nfs_write_data *p); #endif @@ -478,7 +478,7 @@ /* * Allocate nfs_write_data structures */ -extern struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount); +extern struct nfs_write_data *nfs_writedata_alloc(size_t len); /* * linux/fs/nfs/read.c @@ -492,7 +492,7 @@ /* * Allocate nfs_read_data structures */ -extern struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount); +extern struct nfs_read_data *nfs_readdata_alloc(size_t len); /* * linux/fs/nfs3proc.c diff -urN linux-2.6.18-rc6/include/linux/nfs_xdr.h linux-2.6.18-rc7/include/linux/nfs_xdr.h --- linux-2.6.18-rc6/include/linux/nfs_xdr.h 2006-09-13 03:16:01.102684266 +0000 +++ linux-2.6.18-rc7/include/linux/nfs_xdr.h 2006-09-13 03:16:06.291244429 +0000 @@ -729,7 +729,7 @@ struct list_head pages; /* Coalesced read requests */ struct nfs_page *req; /* multi ops per nfs_page */ struct page **pagevec; - unsigned int npages; /* active pages in pagevec */ + unsigned int npages; /* Max length of pagevec */ struct nfs_readargs args; struct nfs_readres res; #ifdef CONFIG_NFS_V4 @@ -748,7 +748,7 @@ struct list_head pages; /* Coalesced requests we wish to flush */ struct nfs_page *req; /* multi ops per nfs_page */ struct page **pagevec; - unsigned int npages; /* active pages in pagevec */ + unsigned int npages; /* Max length of pagevec */ struct nfs_writeargs args; /* argument struct */ struct nfs_writeres res; /* result struct */ #ifdef CONFIG_NFS_V4 diff -urN linux-2.6.18-rc6/include/linux/pci_ids.h linux-2.6.18-rc7/include/linux/pci_ids.h --- linux-2.6.18-rc6/include/linux/pci_ids.h 2006-09-13 03:16:01.106684698 +0000 +++ linux-2.6.18-rc7/include/linux/pci_ids.h 2006-09-13 03:16:06.295244861 +0000 @@ -648,6 +648,8 @@ #define PCI_DEVICE_ID_SI_962 0x0962 #define PCI_DEVICE_ID_SI_963 0x0963 #define PCI_DEVICE_ID_SI_965 0x0965 +#define PCI_DEVICE_ID_SI_966 0x0966 +#define PCI_DEVICE_ID_SI_968 0x0968 #define PCI_DEVICE_ID_SI_5511 0x5511 #define PCI_DEVICE_ID_SI_5513 0x5513 #define PCI_DEVICE_ID_SI_5517 0x5517 diff -urN linux-2.6.18-rc6/include/linux/videodev.h linux-2.6.18-rc7/include/linux/videodev.h --- linux-2.6.18-rc6/include/linux/videodev.h 2006-09-13 03:16:01.138688153 +0000 +++ linux-2.6.18-rc7/include/linux/videodev.h 2006-09-13 03:16:06.323247885 +0000 @@ -14,8 +14,7 @@ #include -#ifdef CONFIG_VIDEO_V4L1_COMPAT -#define HAVE_V4L1 1 +#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) struct video_capability { diff -urN linux-2.6.18-rc6/include/linux/videodev2.h linux-2.6.18-rc7/include/linux/videodev2.h --- linux-2.6.18-rc6/include/linux/videodev2.h 2006-09-13 03:16:01.138688153 +0000 +++ linux-2.6.18-rc7/include/linux/videodev2.h 2006-09-13 03:16:06.323247885 +0000 @@ -22,8 +22,6 @@ #endif #include -#define HAVE_V4L2 1 - /* * Common stuff for both V4L1 and V4L2 * Moved from videodev.h diff -urN linux-2.6.18-rc6/include/media/v4l2-dev.h linux-2.6.18-rc7/include/media/v4l2-dev.h --- linux-2.6.18-rc6/include/media/v4l2-dev.h 2006-09-13 03:16:01.142688585 +0000 +++ linux-2.6.18-rc7/include/media/v4l2-dev.h 2006-09-13 03:16:06.331248748 +0000 @@ -194,7 +194,7 @@ int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); -#ifdef HAVE_V4L1 +#ifdef CONFIG_VIDEO_V4L1_COMPAT /* buffer type is struct vidio_mbuf * */ int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); #endif @@ -335,7 +335,7 @@ unsigned int cmd, void *arg)); -#ifdef HAVE_V4L1 +#ifdef CONFIG_VIDEO_V4L1_COMPAT #include extern struct video_device* video_devdata(struct file*); @@ -357,6 +357,8 @@ class_device_remove_file(&vfd->class_dev, attr); } +#endif /* CONFIG_VIDEO_V4L1_COMPAT */ + #ifdef OBSOLETE_OWNER /* to be removed soon */ /* helper functions to access driver private data. */ static inline void *video_get_drvdata(struct video_device *dev) @@ -372,6 +374,5 @@ extern int video_exclusive_open(struct inode *inode, struct file *file); extern int video_exclusive_release(struct inode *inode, struct file *file); -#endif /* HAVE_V4L1 */ #endif /* _V4L2_DEV_H */ diff -urN linux-2.6.18-rc6/kernel/audit.c linux-2.6.18-rc7/kernel/audit.c --- linux-2.6.18-rc6/kernel/audit.c 2006-09-13 03:16:01.178692472 +0000 +++ linux-2.6.18-rc7/kernel/audit.c 2006-09-13 03:16:06.363252203 +0000 @@ -1028,6 +1028,9 @@ struct sk_buff *skb; static const unsigned char *hex = "0123456789ABCDEF"; + if (!ab) + return; + BUG_ON(!ab->skb); skb = ab->skb; avail = skb_tailroom(skb); @@ -1060,6 +1063,9 @@ unsigned char *ptr; struct sk_buff *skb; + if (!ab) + return; + BUG_ON(!ab->skb); skb = ab->skb; avail = skb_tailroom(skb); diff -urN linux-2.6.18-rc6/kernel/audit.h linux-2.6.18-rc7/kernel/audit.h --- linux-2.6.18-rc6/kernel/audit.h 2006-09-13 03:16:01.178692472 +0000 +++ linux-2.6.18-rc7/kernel/audit.h 2006-09-13 03:16:06.363252203 +0000 @@ -104,6 +104,7 @@ return (ino & (AUDIT_INODE_BUCKETS-1)); } +extern int audit_match_class(int class, unsigned syscall); extern int audit_comparator(const u32 left, const u32 op, const u32 right); extern int audit_compare_dname_path(const char *dname, const char *path, int *dirlen); diff -urN linux-2.6.18-rc6/kernel/auditfilter.c linux-2.6.18-rc7/kernel/auditfilter.c --- linux-2.6.18-rc6/kernel/auditfilter.c 2006-09-13 03:16:01.178692472 +0000 +++ linux-2.6.18-rc7/kernel/auditfilter.c 2006-09-13 03:16:06.363252203 +0000 @@ -302,6 +302,15 @@ return 0; } +int audit_match_class(int class, unsigned syscall) +{ + if (unlikely(syscall >= AUDIT_BITMASK_SIZE * sizeof(__u32))) + return 0; + if (unlikely(class >= AUDIT_SYSCALL_CLASSES || !classes[class])) + return 0; + return classes[class][AUDIT_WORD(syscall)] & AUDIT_BIT(syscall); +} + /* Common user-space to kernel rule translation. */ static inline struct audit_entry *audit_to_entry_common(struct audit_rule *rule) { @@ -404,6 +413,7 @@ case AUDIT_PERS: case AUDIT_ARCH: case AUDIT_MSGTYPE: + case AUDIT_PPID: case AUDIT_DEVMAJOR: case AUDIT_DEVMINOR: case AUDIT_EXIT: @@ -413,6 +423,10 @@ case AUDIT_ARG2: case AUDIT_ARG3: break; + case AUDIT_PERM: + if (f->val & ~15) + goto exit_free; + break; case AUDIT_INODE: err = audit_to_inode(&entry->rule, f); if (err) @@ -567,6 +581,10 @@ entry->rule.buflen += f->val; entry->rule.filterkey = str; break; + case AUDIT_PERM: + if (f->val & ~15) + goto exit_free; + break; default: goto exit_free; } @@ -913,7 +931,7 @@ } ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE); - audit_log_format(ab, "audit updated rules specifying watch="); + audit_log_format(ab, "audit updated rules specifying path="); audit_log_untrustedstring(ab, owatch->path); audit_log_format(ab, " with dev=%u ino=%lu\n", dev, ino); audit_log_end(ab); @@ -936,19 +954,28 @@ struct audit_watch *w, *nextw; struct audit_krule *r, *nextr; struct audit_entry *e; + struct audit_buffer *ab; mutex_lock(&audit_filter_mutex); parent->flags |= AUDIT_PARENT_INVALID; list_for_each_entry_safe(w, nextw, &parent->watches, wlist) { list_for_each_entry_safe(r, nextr, &w->rules, rlist) { e = container_of(r, struct audit_entry, rule); + + ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE); + audit_log_format(ab, "audit implicitly removed rule path="); + audit_log_untrustedstring(ab, w->path); + if (r->filterkey) { + audit_log_format(ab, " key="); + audit_log_untrustedstring(ab, r->filterkey); + } else + audit_log_format(ab, " key=(null)"); + audit_log_format(ab, " list=%d", r->listnr); + audit_log_end(ab); + list_del(&r->rlist); list_del_rcu(&e->list); call_rcu(&e->rcu, audit_free_rule_rcu); - - audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, - "audit implicitly removed rule from list=%d\n", - AUDIT_FILTER_EXIT); } audit_remove_watch(w); } diff -urN linux-2.6.18-rc6/kernel/auditsc.c linux-2.6.18-rc7/kernel/auditsc.c --- linux-2.6.18-rc6/kernel/auditsc.c 2006-09-13 03:16:01.178692472 +0000 +++ linux-2.6.18-rc7/kernel/auditsc.c 2006-09-13 03:16:06.367252635 +0000 @@ -209,6 +209,54 @@ #endif }; +#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE]) +static inline int open_arg(int flags, int mask) +{ + int n = ACC_MODE(flags); + if (flags & (O_TRUNC | O_CREAT)) + n |= AUDIT_PERM_WRITE; + return n & mask; +} + +static int audit_match_perm(struct audit_context *ctx, int mask) +{ + unsigned n = ctx->major; + switch (audit_classify_syscall(ctx->arch, n)) { + case 0: /* native */ + if ((mask & AUDIT_PERM_WRITE) && + audit_match_class(AUDIT_CLASS_WRITE, n)) + return 1; + if ((mask & AUDIT_PERM_READ) && + audit_match_class(AUDIT_CLASS_READ, n)) + return 1; + if ((mask & AUDIT_PERM_ATTR) && + audit_match_class(AUDIT_CLASS_CHATTR, n)) + return 1; + return 0; + case 1: /* 32bit on biarch */ + if ((mask & AUDIT_PERM_WRITE) && + audit_match_class(AUDIT_CLASS_WRITE_32, n)) + return 1; + if ((mask & AUDIT_PERM_READ) && + audit_match_class(AUDIT_CLASS_READ_32, n)) + return 1; + if ((mask & AUDIT_PERM_ATTR) && + audit_match_class(AUDIT_CLASS_CHATTR_32, n)) + return 1; + return 0; + case 2: /* open */ + return mask & ACC_MODE(ctx->argv[1]); + case 3: /* openat */ + return mask & ACC_MODE(ctx->argv[2]); + case 4: /* socketcall */ + return ((mask & AUDIT_PERM_WRITE) && ctx->argv[0] == SYS_BIND); + case 5: /* execve */ + return mask & AUDIT_PERM_EXEC; + default: + return 0; + } +} + /* Determine if any context name data matches a rule's watch data */ /* Compare a task_struct with an audit_rule. Return 1 on match, 0 * otherwise. */ @@ -397,6 +445,9 @@ /* ignore this field for filtering */ result = 1; break; + case AUDIT_PERM: + result = audit_match_perm(ctx, f->val); + break; } if (!result) diff -urN linux-2.6.18-rc6/kernel/futex.c linux-2.6.18-rc7/kernel/futex.c --- linux-2.6.18-rc6/kernel/futex.c 2006-09-13 03:16:01.186693336 +0000 +++ linux-2.6.18-rc7/kernel/futex.c 2006-09-13 03:16:06.371253067 +0000 @@ -1120,9 +1120,10 @@ * if there are waiters then it will block, it does PI, etc. (Due to * races the kernel might see a 0 value of the futex too.) */ -static int do_futex_lock_pi(u32 __user *uaddr, int detect, int trylock, - struct hrtimer_sleeper *to) +static int futex_lock_pi(u32 __user *uaddr, int detect, unsigned long sec, + long nsec, int trylock) { + struct hrtimer_sleeper timeout, *to = NULL; struct task_struct *curr = current; struct futex_hash_bucket *hb; u32 uval, newval, curval; @@ -1132,6 +1133,13 @@ if (refill_pi_state_cache()) return -ENOMEM; + if (sec != MAX_SCHEDULE_TIMEOUT) { + to = &timeout; + hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS); + hrtimer_init_sleeper(to, current); + to->timer.expires = ktime_set(sec, nsec); + } + q.pi_state = NULL; retry: down_read(&curr->mm->mmap_sem); @@ -1307,7 +1315,7 @@ if (!detect && ret == -EDEADLK && 0) force_sig(SIGKILL, current); - return ret; + return ret != -EINTR ? ret : -ERESTARTNOINTR; out_unlock_release_sem: queue_unlock(&q, hb); @@ -1342,76 +1350,6 @@ } /* - * Restart handler - */ -static long futex_lock_pi_restart(struct restart_block *restart) -{ - struct hrtimer_sleeper timeout, *to = NULL; - int ret; - - restart->fn = do_no_restart_syscall; - - if (restart->arg2 || restart->arg3) { - to = &timeout; - hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS); - hrtimer_init_sleeper(to, current); - to->timer.expires.tv64 = ((u64)restart->arg1 << 32) | - (u64) restart->arg0; - } - - pr_debug("lock_pi restart: %p, %d (%d)\n", - (u32 __user *)restart->arg0, current->pid); - - ret = do_futex_lock_pi((u32 __user *)restart->arg0, restart->arg1, - 0, to); - - if (ret != -EINTR) - return ret; - - restart->fn = futex_lock_pi_restart; - - /* The other values are filled in */ - return -ERESTART_RESTARTBLOCK; -} - -/* - * Called from the syscall entry below. - */ -static int futex_lock_pi(u32 __user *uaddr, int detect, unsigned long sec, - long nsec, int trylock) -{ - struct hrtimer_sleeper timeout, *to = NULL; - struct restart_block *restart; - int ret; - - if (sec != MAX_SCHEDULE_TIMEOUT) { - to = &timeout; - hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS); - hrtimer_init_sleeper(to, current); - to->timer.expires = ktime_set(sec, nsec); - } - - ret = do_futex_lock_pi(uaddr, detect, trylock, to); - - if (ret != -EINTR) - return ret; - - pr_debug("lock_pi interrupted: %p, %d (%d)\n", uaddr, current->pid); - - restart = ¤t_thread_info()->restart_block; - restart->fn = futex_lock_pi_restart; - restart->arg0 = (unsigned long) uaddr; - restart->arg1 = detect; - if (to) { - restart->arg2 = to->timer.expires.tv64 & 0xFFFFFFFF; - restart->arg3 = to->timer.expires.tv64 >> 32; - } else - restart->arg2 = restart->arg3 = 0; - - return -ERESTART_RESTARTBLOCK; -} - -/* * Userspace attempted a TID -> 0 atomic transition, and failed. * This is the in-kernel slowpath: we look up the PI state (if any), * and do the rt-mutex unlock. diff -urN linux-2.6.18-rc6/kernel/panic.c linux-2.6.18-rc7/kernel/panic.c --- linux-2.6.18-rc6/kernel/panic.c 2006-09-13 03:16:01.194694199 +0000 +++ linux-2.6.18-rc7/kernel/panic.c 2006-09-13 03:16:06.383254363 +0000 @@ -173,7 +173,7 @@ void add_taint(unsigned flag) { - debug_locks_off(); /* can't trust the integrity of the kernel anymore */ + debug_locks = 0; /* can't trust the integrity of the kernel anymore */ tainted |= flag; } EXPORT_SYMBOL(add_taint); diff -urN linux-2.6.18-rc6/kernel/power/Kconfig linux-2.6.18-rc7/kernel/power/Kconfig --- linux-2.6.18-rc6/kernel/power/Kconfig 2006-09-13 03:16:01.198694631 +0000 +++ linux-2.6.18-rc7/kernel/power/Kconfig 2006-09-13 03:16:06.383254363 +0000 @@ -56,7 +56,7 @@ config SOFTWARE_SUSPEND bool "Software Suspend" - depends on PM && SWAP && (X86 && (!SMP || SUSPEND_SMP)) || ((FRV || PPC32) && !SMP) + depends on PM && SWAP && ((X86 && (!SMP || SUSPEND_SMP) && !X86_PAE) || ((FRV || PPC32) && !SMP)) ---help--- Enable the possibility of suspending the machine. It doesn't need ACPI or APM. @@ -78,6 +78,10 @@ For more information take a look at . + (For now, swsusp is incompatible with PAE aka HIGHMEM_64G on i386. + we need identity mapping for resume to work, and that is trivial + to get with 4MB pages, but less than trivial on PAE). + config PM_STD_PARTITION string "Default resume partition" depends on SOFTWARE_SUSPEND diff -urN linux-2.6.18-rc6/kernel/spinlock.c linux-2.6.18-rc7/kernel/spinlock.c --- linux-2.6.18-rc6/kernel/spinlock.c 2006-09-13 03:16:01.210695927 +0000 +++ linux-2.6.18-rc7/kernel/spinlock.c 2006-09-13 03:16:06.395255659 +0000 @@ -72,7 +72,7 @@ * not re-enabled during lock-acquire (which the preempt-spin-ops do): */ #if !defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP) || \ - defined(CONFIG_PROVE_LOCKING) + defined(CONFIG_DEBUG_LOCK_ALLOC) void __lockfunc _read_lock(rwlock_t *lock) { diff -urN linux-2.6.18-rc6/lib/Kconfig linux-2.6.18-rc7/lib/Kconfig --- linux-2.6.18-rc6/lib/Kconfig 2006-09-13 03:16:01.218696791 +0000 +++ linux-2.6.18-rc7/lib/Kconfig 2006-09-13 03:16:06.403256522 +0000 @@ -38,6 +38,11 @@ require M here. See Castagnoli93. Module will be libcrc32c. +config AUDIT_GENERIC + bool + depends on AUDIT && !AUDIT_ARCH + default y + # # compression support is select'ed if needed # diff -urN linux-2.6.18-rc6/lib/Makefile linux-2.6.18-rc7/lib/Makefile --- linux-2.6.18-rc6/lib/Makefile 2006-09-13 03:16:01.218696791 +0000 +++ linux-2.6.18-rc7/lib/Makefile 2006-09-13 03:16:06.403256522 +0000 @@ -49,6 +49,7 @@ obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o obj-$(CONFIG_SMP) += percpu_counter.o +obj-$(CONFIG_AUDIT_GENERIC) += audit.o obj-$(CONFIG_SWIOTLB) += swiotlb.o diff -urN linux-2.6.18-rc6/lib/audit.c linux-2.6.18-rc7/lib/audit.c --- linux-2.6.18-rc6/lib/audit.c 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.18-rc7/lib/audit.c 2006-09-13 03:16:06.403256522 +0000 @@ -0,0 +1,53 @@ +#include +#include +#include +#include + +static unsigned dir_class[] = { +#include +~0U +}; + +static unsigned read_class[] = { +#include +~0U +}; + +static unsigned write_class[] = { +#include +~0U +}; + +static unsigned chattr_class[] = { +#include +~0U +}; + +int audit_classify_syscall(int abi, unsigned syscall) +{ + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; +#ifdef __NR_socketcall + case __NR_socketcall: + return 4; +#endif + case __NR_execve: + return 5; + default: + return 0; + } +} + +static int __init audit_classes_init(void) +{ + audit_register_class(AUDIT_CLASS_WRITE, write_class); + audit_register_class(AUDIT_CLASS_READ, read_class); + audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); + audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); + return 0; +} + +__initcall(audit_classes_init); diff -urN linux-2.6.18-rc6/mm/mmap.c linux-2.6.18-rc7/mm/mmap.c --- linux-2.6.18-rc6/mm/mmap.c 2006-09-13 03:16:01.242699382 +0000 +++ linux-2.6.18-rc7/mm/mmap.c 2006-09-13 03:16:06.427259114 +0000 @@ -30,6 +30,10 @@ #include #include +#ifndef arch_mmap_check +#define arch_mmap_check(addr, len, flags) (0) +#endif + static void unmap_region(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev, unsigned long start, unsigned long end); @@ -913,6 +917,10 @@ if (!len) return -EINVAL; + error = arch_mmap_check(addr, len, flags); + if (error) + return error; + /* Careful about overflows.. */ len = PAGE_ALIGN(len); if (!len || len > TASK_SIZE) @@ -1859,6 +1867,7 @@ unsigned long flags; struct rb_node ** rb_link, * rb_parent; pgoff_t pgoff = addr >> PAGE_SHIFT; + int error; len = PAGE_ALIGN(len); if (!len) @@ -1867,6 +1876,12 @@ if ((addr + len) > TASK_SIZE || (addr + len) < addr) return -EINVAL; + flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; + + error = arch_mmap_check(addr, len, flags); + if (error) + return error; + /* * mlock MCL_FUTURE? */ @@ -1907,8 +1922,6 @@ if (security_vm_enough_memory(len >> PAGE_SHIFT)) return -ENOMEM; - flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; - /* Can we just expand an old private anonymous mapping? */ if (vma_merge(mm, prev, addr, addr + len, flags, NULL, NULL, pgoff, NULL)) diff -urN linux-2.6.18-rc6/mm/truncate.c linux-2.6.18-rc7/mm/truncate.c --- linux-2.6.18-rc6/mm/truncate.c 2006-09-13 03:16:01.250700246 +0000 +++ linux-2.6.18-rc7/mm/truncate.c 2006-09-13 03:16:06.435259978 +0000 @@ -68,10 +68,10 @@ return 0; write_lock_irq(&mapping->tree_lock); - if (PageDirty(page)) { - write_unlock_irq(&mapping->tree_lock); - return 0; - } + if (PageDirty(page)) + goto failed; + if (page_count(page) != 2) /* caller's ref + pagecache ref */ + goto failed; BUG_ON(PagePrivate(page)); __remove_from_page_cache(page); @@ -79,6 +79,9 @@ ClearPageUptodate(page); page_cache_release(page); /* pagecache ref */ return 1; +failed: + write_unlock_irq(&mapping->tree_lock); + return 0; } /**