From 36cd44aa2521e37df168de945d3346b06ac17402 Mon Sep 17 00:00:00 2001 From: Joachim Fenkes Date: Mon, 10 Dec 2007 12:20:57 +0100 Subject: [PATCH] --- yaml --- r: 74897 b: refs/heads/master c: 1457edc72d187f452be1374c7d9281f1dfa16f32 h: refs/heads/master i: 74895: 98ff5465fba718b287796f8b09a43442457fed93 v: v3 --- [refs] | 2 +- trunk/Documentation/i2c/summary | 45 +++++++++++++-- trunk/Documentation/nfsroot.txt | 12 +--- trunk/arch/arm/Kconfig | 8 +-- trunk/arch/arm/boot/compressed/head.S | 2 +- trunk/arch/arm/common/it8152.c | 10 +++- trunk/arch/arm/mach-ixp4xx/common.c | 10 +--- trunk/arch/arm/mach-pxa/cm-x270-pci.c | 18 +++--- trunk/arch/mips/au1000/Kconfig | 9 +++ trunk/arch/mips/au1000/common/pci.c | 8 +-- trunk/arch/mips/au1000/common/setup.c | 9 +-- trunk/arch/mips/cobalt/time.c | 21 +------ trunk/arch/mips/kernel/process.c | 3 +- trunk/arch/mips/kernel/time.c | 4 ++ trunk/arch/mips/kernel/traps.c | 6 +- trunk/arch/mips/mips-boards/generic/memory.c | 2 - trunk/arch/mips/pci/pci.c | 2 - .../powerpc/configs/mpc8272_ads_defconfig | 6 +- trunk/arch/powerpc/configs/pq2fads_defconfig | 6 +- trunk/arch/powerpc/configs/ps3_defconfig | 2 +- trunk/arch/powerpc/kernel/ppc_ksyms.c | 12 ++++ trunk/arch/powerpc/math-emu/op-2.h | 3 +- .../arch/powerpc/platforms/iseries/lpevents.c | 17 +----- trunk/arch/powerpc/platforms/ps3/Kconfig | 2 +- trunk/arch/powerpc/sysdev/cpm2_common.c | 3 +- trunk/arch/sparc64/kernel/entry.S | 12 ---- trunk/arch/sparc64/kernel/smp.c | 19 ++----- trunk/arch/sparc64/mm/init.c | 29 +++------- trunk/drivers/acpi/battery.c | 2 +- trunk/drivers/acpi/numa.c | 4 +- trunk/drivers/acpi/pci_bind.c | 3 + trunk/drivers/acpi/sbs.c | 27 +++++---- trunk/drivers/acpi/sbshc.c | 17 ++---- trunk/drivers/acpi/sbshc.h | 6 -- trunk/drivers/acpi/video.c | 4 +- trunk/drivers/atm/fore200e.c | 3 +- trunk/drivers/i2c/busses/i2c-davinci.c | 4 +- trunk/drivers/i2c/busses/i2c-gpio.c | 1 - trunk/drivers/i2c/busses/i2c-omap.c | 6 +- trunk/drivers/i2c/chips/isp1301_omap.c | 2 +- trunk/drivers/infiniband/hw/ehca/ehca_qp.c | 4 +- trunk/drivers/media/video/videobuf-core.c | 14 +---- trunk/drivers/misc/thinkpad_acpi.c | 4 +- trunk/drivers/net/fs_enet/mac-scc.c | 2 +- trunk/drivers/net/irda/irda-usb.c | 5 -- trunk/drivers/net/irda/mcs7780.c | 2 - trunk/drivers/net/irda/stir4200.c | 10 ++-- trunk/drivers/net/wan/syncppp.c | 35 ++++++------ trunk/drivers/serial/suncore.c | 33 ++--------- trunk/drivers/serial/suncore.h | 3 +- trunk/drivers/serial/sunhv.c | 14 ++++- trunk/drivers/serial/sunsab.c | 16 ++++-- trunk/drivers/serial/sunsu.c | 16 ++++-- trunk/drivers/serial/sunzilog.c | 41 +++++++------ trunk/include/asm-arm/arch-pxa/pxa-regs.h | 1 - trunk/include/asm-mips/mach-au1x00/au1000.h | 9 ++- trunk/include/asm-powerpc/commproc.h | 3 + trunk/include/asm-s390/pgtable.h | 8 +-- trunk/include/asm-sparc/unistd.h | 9 --- trunk/include/asm-sparc64/hypervisor.h | 4 -- trunk/include/linux/netfilter_bridge.h | 3 +- trunk/net/ax25/ax25_subr.c | 2 - trunk/net/bridge/br_device.c | 3 +- trunk/net/ipv4/ipconfig.c | 20 ++++++- trunk/net/ipv4/netfilter/ip_tables.c | 57 +++++++++++++++---- trunk/net/ipv4/tcp_input.c | 2 +- trunk/net/ipv6/ipv6_sockglue.c | 12 ++-- trunk/net/irda/irlmp.c | 1 - trunk/net/irda/parameters.c | 6 +- trunk/net/netfilter/nf_conntrack_netlink.c | 4 +- trunk/net/netfilter/x_tables.c | 8 +-- trunk/net/netfilter/xt_hashlimit.c | 2 +- trunk/net/sctp/ulpqueue.c | 33 ----------- trunk/net/tipc/socket.c | 2 +- trunk/net/xfrm/xfrm_state.c | 10 ++-- trunk/sound/arm/pxa2xx-ac97.c | 4 +- trunk/sound/soc/pxa/pxa2xx-ac97.c | 4 +- 77 files changed, 366 insertions(+), 401 deletions(-) diff --git a/[refs] b/[refs] index 153273a7182d..98df53aa590d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a12e60621b553e32711f9ad653aad3c92881c400 +refs/heads/master: 1457edc72d187f452be1374c7d9281f1dfa16f32 diff --git a/trunk/Documentation/i2c/summary b/trunk/Documentation/i2c/summary index 13ab076dcd92..003c7319b8c7 100644 --- a/trunk/Documentation/i2c/summary +++ b/trunk/Documentation/i2c/summary @@ -1,3 +1,5 @@ +This is an explanation of what i2c is, and what is supported in this package. + I2C and SMBus ============= @@ -31,17 +33,52 @@ When we talk about I2C, we use the following terms: Client An Algorithm driver contains general code that can be used for a whole class -of I2C adapters. Each specific adapter driver either depends on one algorithm -driver, or includes its own implementation. +of I2C adapters. Each specific adapter driver depends on one algorithm +driver. A Driver driver (yes, this sounds ridiculous, sorry) contains the general code to access some type of device. Each detected device gets its own data in the Client structure. Usually, Driver and Client are more closely integrated than Algorithm and Adapter. -For a given configuration, you will need a driver for your I2C bus, and -drivers for your I2C devices (usually one driver for each device). +For a given configuration, you will need a driver for your I2C bus (usually +a separate Adapter and Algorithm driver), and drivers for your I2C devices +(usually one driver for each device). There are no I2C device drivers +in this package. See the lm_sensors project http://www.lm-sensors.nu +for device drivers. At this time, Linux only operates I2C (or SMBus) in master mode; you can't use these APIs to make a Linux system behave as a slave/device, either to speak a custom protocol or to emulate some other device. + + +Included Bus Drivers +==================== +Note that only stable drivers are patched into the kernel by 'mkpatch'. + + +Base modules +------------ + +i2c-core: The basic I2C code, including the /proc/bus/i2c* interface +i2c-dev: The /dev/i2c-* interface +i2c-proc: The /proc/sys/dev/sensors interface for device (client) drivers + +Algorithm drivers +----------------- + +i2c-algo-bit: A bit-banging algorithm +i2c-algo-pcf: A PCF 8584 style algorithm +i2c-algo-ibm_ocp: An algorithm for the I2C device in IBM 4xx processors (NOT BUILT BY DEFAULT) + +Adapter drivers +--------------- + +i2c-elektor: Elektor ISA card (uses i2c-algo-pcf) +i2c-elv: ELV parallel port adapter (uses i2c-algo-bit) +i2c-pcf-epp: PCF8584 on a EPP parallel port (uses i2c-algo-pcf) (NOT mkpatched) +i2c-philips-par: Philips style parallel port adapter (uses i2c-algo-bit) +i2c-adap-ibm_ocp: IBM 4xx processor I2C device (uses i2c-algo-ibm_ocp) (NOT BUILT BY DEFAULT) +i2c-pport: Primitive parallel port adapter (uses i2c-algo-bit) +i2c-velleman: Velleman K8000 parallel port adapter (uses i2c-algo-bit) + diff --git a/trunk/Documentation/nfsroot.txt b/trunk/Documentation/nfsroot.txt index 9b956a969362..16a7cae2721d 100644 --- a/trunk/Documentation/nfsroot.txt +++ b/trunk/Documentation/nfsroot.txt @@ -92,14 +92,8 @@ ip=:::::: autoconfiguration. The parameter can appear alone as the value to the `ip' - parameter (without all the ':' characters before). If the value is - "ip=off" or "ip=none", no autoconfiguration will take place, otherwise - autoconfiguration will take place. The most common way to use this - is "ip=dhcp". - - Note that "ip=off" is not the same thing as "ip=::::::off", because in - the latter autoconfiguration will take place if any of DHCP, BOOTP or RARP - are compiled in the kernel. + parameter (without all the ':' characters before) in which case auto- + configuration is used. IP address of the client. @@ -148,7 +142,7 @@ ip=:::::: into the kernel will be used, regardless of the value of this option. - off or none: don't use autoconfiguration + off or none: don't use autoconfiguration (default) on or any: use any protocol available in the kernel dhcp: use DHCP bootp: use BOOTP diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index c4de2d4664d7..a7e9fea978a6 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -537,7 +537,7 @@ config ISA_DMA_API bool config PCI - bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE + bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 help Find out whether you have a PCI motherboard. PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside @@ -558,12 +558,6 @@ config PCI_HOST_VIA82C505 depends on PCI && ARCH_SHARK default y -config PCI_HOST_ITE8152 - bool - depends on PCI && MACH_ARMCORE - default y - select DMABOUNCE - source "drivers/pci/Kconfig" source "drivers/pcmcia/Kconfig" diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index 5cac46a19bb7..b9b03eda70e5 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -31,7 +31,7 @@ .macro loadsp, rb .endm .macro writeb, ch, rb - mcr p14, 0, \ch, c1, c0, 0 + mcr p14, 0, \ch, c0, c1, 0 .endm #endif diff --git a/trunk/arch/arm/common/it8152.c b/trunk/arch/arm/common/it8152.c index 97b7dc13d9aa..c03de9bfd76b 100644 --- a/trunk/arch/arm/common/it8152.c +++ b/trunk/arch/arm/common/it8152.c @@ -70,6 +70,8 @@ static inline void it8152_irq(int irq) { struct irq_desc *desc; + printk(KERN_DEBUG "===> %s: irq=%d\n", __FUNCTION__, irq); + desc = irq_desc + irq; desc_handle_irq(irq, desc); } @@ -104,6 +106,8 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) int bits_pd, bits_lp, bits_ld; int i; + printk(KERN_DEBUG "=> %s: irq = %d\n", __FUNCTION__, irq); + while (1) { /* Read all */ bits_pd = __raw_readl(IT8152_INTC_PDCNIRR); @@ -289,7 +293,8 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) */ int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { - dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); + printk(KERN_DEBUG "%s: %s %llx\n", + __FUNCTION__, dev->dev.bus_id, mask); if (mask >= PHYS_OFFSET + SZ_64M - 1) return 0; @@ -299,7 +304,8 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask) int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) { - dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); + printk(KERN_DEBUG "%s: %s %llx\n", + __FUNCTION__, dev->dev.bus_id, mask); if (mask >= PHYS_OFFSET + SZ_64M - 1) return 0; diff --git a/trunk/arch/arm/mach-ixp4xx/common.c b/trunk/arch/arm/mach-ixp4xx/common.c index f6d66dce6852..c1271c449246 100644 --- a/trunk/arch/arm/mach-ixp4xx/common.c +++ b/trunk/arch/arm/mach-ixp4xx/common.c @@ -442,8 +442,7 @@ static int ixp4xx_set_next_event(unsigned long evt, static void ixp4xx_set_mode(enum clock_event_mode mode, struct clock_event_device *evt) { - unsigned long opts = *IXP4XX_OSRT1 & IXP4XX_OST_RELOAD_MASK; - unsigned long osrt = *IXP4XX_OSRT1 & ~IXP4XX_OST_RELOAD_MASK; + unsigned long opts, osrt = *IXP4XX_OSRT1 & ~IXP4XX_OST_RELOAD_MASK; switch (mode) { case CLOCK_EVT_MODE_PERIODIC: @@ -456,15 +455,12 @@ static void ixp4xx_set_mode(enum clock_event_mode mode, opts = IXP4XX_OST_ENABLE | IXP4XX_OST_ONE_SHOT; break; case CLOCK_EVT_MODE_SHUTDOWN: - opts &= ~IXP4XX_OST_ENABLE; - break; - case CLOCK_EVT_MODE_RESUME: - opts |= IXP4XX_OST_ENABLE; - break; case CLOCK_EVT_MODE_UNUSED: default: osrt = opts = 0; break; + case CLOCK_EVT_MODE_RESUME: + break; } *IXP4XX_OSRT1 = osrt | opts; diff --git a/trunk/arch/arm/mach-pxa/cm-x270-pci.c b/trunk/arch/arm/mach-pxa/cm-x270-pci.c index 15c4e0df3e10..878d3b9b8633 100644 --- a/trunk/arch/arm/mach-pxa/cm-x270-pci.c +++ b/trunk/arch/arm/mach-pxa/cm-x270-pci.c @@ -40,7 +40,7 @@ void __init cmx270_pci_adjust_zones(int node, unsigned long *zone_size, { unsigned int sz = SZ_64M >> PAGE_SHIFT; - pr_info("Adjusting zones for CM-x270\n"); + printk(KERN_INFO "Adjusting zones for CM-x270\n"); /* * Only adjust if > 64M on current system @@ -104,7 +104,8 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) { int irq; - dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin); + printk(KERN_DEBUG "===> %s: %s slot=%x, pin=%x\n", __FUNCTION__, + pci_name(dev), slot, pin); irq = it8152_pci_map_irq(dev, slot, pin); if (irq) @@ -140,13 +141,14 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) return(0); } -static void cmx270_pci_preinit(void) +static struct pci_bus * __init +cmx270_pci_scan_bus(int nr, struct pci_sys_data *sys) { - pr_info("Initializing CM-X270 PCI subsystem\n"); + printk(KERN_INFO "Initializing CM-X270 PCI subsystem\n"); __raw_writel(0x800, IT8152_PCI_CFG_ADDR); if (__raw_readl(IT8152_PCI_CFG_DATA) == 0x81521283) { - pr_info("PCI Bridge found.\n"); + printk(KERN_INFO "PCI Bridge found.\n"); /* set PCI I/O base at 0 */ writel(0x848, IT8152_PCI_CFG_ADDR); @@ -161,7 +163,7 @@ static void cmx270_pci_preinit(void) /* CardBus Controller on ATXbase baseboard */ writel(0x4000, IT8152_PCI_CFG_ADDR); if (readl(IT8152_PCI_CFG_DATA) == 0xAC51104C) { - pr_info("CardBus Bridge found.\n"); + printk(KERN_INFO "CardBus Bridge found.\n"); /* Configure socket 0 */ writel(0x408C, IT8152_PCI_CFG_ADDR); @@ -194,6 +196,7 @@ static void cmx270_pci_preinit(void) writel(0xb0000000, IT8152_PCI_CFG_DATA); } } + return it8152_pci_scan_bus(nr, sys); } static struct hw_pci cmx270_pci __initdata = { @@ -201,8 +204,7 @@ static struct hw_pci cmx270_pci __initdata = { .map_irq = cmx270_pci_map_irq, .nr_controllers = 1, .setup = it8152_pci_setup, - .scan = it8152_pci_scan_bus, - .preinit = cmx270_pci_preinit, + .scan = cmx270_pci_scan_bus, }; static int __init cmx270_init_pci(void) diff --git a/trunk/arch/mips/au1000/Kconfig b/trunk/arch/mips/au1000/Kconfig index 1fe97cccead1..05d1354aad3a 100644 --- a/trunk/arch/mips/au1000/Kconfig +++ b/trunk/arch/mips/au1000/Kconfig @@ -7,6 +7,7 @@ config MIPS_MTX1 bool "4G Systems MTX-1 board" select DMA_NONCOHERENT select HW_HAS_PCI + select RESOURCES_64BIT if PCI select SOC_AU1500 select SYS_SUPPORTS_LITTLE_ENDIAN @@ -21,6 +22,7 @@ config MIPS_DB1000 select SOC_AU1000 select DMA_NONCOHERENT select HW_HAS_PCI + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_LITTLE_ENDIAN config MIPS_DB1100 @@ -42,6 +44,7 @@ config MIPS_DB1500 select DMA_NONCOHERENT select HW_HAS_PCI select MIPS_DISABLE_OBSOLETE_IDE + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_LITTLE_ENDIAN @@ -51,6 +54,7 @@ config MIPS_DB1550 select HW_HAS_PCI select DMA_NONCOHERENT select MIPS_DISABLE_OBSOLETE_IDE + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_LITTLE_ENDIAN config MIPS_MIRAGE @@ -64,6 +68,7 @@ config MIPS_PB1000 select SOC_AU1000 select DMA_NONCOHERENT select HW_HAS_PCI + select RESOURCES_64BIT if PCI select SWAP_IO_SPACE select SYS_SUPPORTS_LITTLE_ENDIAN @@ -72,6 +77,7 @@ config MIPS_PB1100 select SOC_AU1100 select DMA_NONCOHERENT select HW_HAS_PCI + select RESOURCES_64BIT if PCI select SWAP_IO_SPACE select SYS_SUPPORTS_LITTLE_ENDIAN @@ -80,6 +86,7 @@ config MIPS_PB1200 select SOC_AU1200 select DMA_NONCOHERENT select MIPS_DISABLE_OBSOLETE_IDE + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_LITTLE_ENDIAN config MIPS_PB1500 @@ -87,6 +94,7 @@ config MIPS_PB1500 select SOC_AU1500 select DMA_NONCOHERENT select HW_HAS_PCI + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_LITTLE_ENDIAN config MIPS_PB1550 @@ -95,6 +103,7 @@ config MIPS_PB1550 select DMA_NONCOHERENT select HW_HAS_PCI select MIPS_DISABLE_OBSOLETE_IDE + select RESOURCES_64BIT if PCI select SYS_SUPPORTS_LITTLE_ENDIAN config MIPS_XXS1500 diff --git a/trunk/arch/mips/au1000/common/pci.c b/trunk/arch/mips/au1000/common/pci.c index 6fa70a36a250..9be99a68932a 100644 --- a/trunk/arch/mips/au1000/common/pci.c +++ b/trunk/arch/mips/au1000/common/pci.c @@ -39,15 +39,15 @@ /* TBD */ static struct resource pci_io_resource = { - .start = PCI_IO_START, - .end = PCI_IO_END, + .start = (resource_size_t)PCI_IO_START, + .end = (resource_size_t)PCI_IO_END, .name = "PCI IO space", .flags = IORESOURCE_IO }; static struct resource pci_mem_resource = { - .start = PCI_MEM_START, - .end = PCI_MEM_END, + .start = (resource_size_t)PCI_MEM_START, + .end = (resource_size_t)PCI_MEM_END, .name = "PCI memory space", .flags = IORESOURCE_MEM }; diff --git a/trunk/arch/mips/au1000/common/setup.c b/trunk/arch/mips/au1000/common/setup.c index d885e3848ec6..a90d425d4651 100644 --- a/trunk/arch/mips/au1000/common/setup.c +++ b/trunk/arch/mips/au1000/common/setup.c @@ -137,11 +137,12 @@ phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) #ifdef CONFIG_PCI { - u32 start = (u32)Au1500_PCI_MEM_START; - u32 end = (u32)Au1500_PCI_MEM_END; + u32 start, end; - /* Check for PCI memory window */ - if (phys_addr >= start && (phys_addr + size - 1) <= end) + start = (u32)Au1500_PCI_MEM_START; + end = (u32)Au1500_PCI_MEM_END; + /* check for pci memory window */ + if ((phys_addr >= start) && ((phys_addr + size) < end)) return (phys_t) ((phys_addr - start) + Au1500_PCI_MEM_START); } diff --git a/trunk/arch/mips/cobalt/time.c b/trunk/arch/mips/cobalt/time.c index 4a570e7145fe..fa819fccd5db 100644 --- a/trunk/arch/mips/cobalt/time.c +++ b/trunk/arch/mips/cobalt/time.c @@ -27,28 +27,9 @@ void __init plat_time_init(void) { - u32 start, end; - int i = HZ / 10; - setup_pit_timer(); gt641xx_set_base_clock(GT641XX_BASE_CLOCK); - /* - * MIPS counter frequency is measured during a 100msec interval - * using GT64111 timer0. - */ - while (!gt641xx_timer0_state()) - ; - - start = read_c0_count(); - - while (i--) - while (!gt641xx_timer0_state()) - ; - - end = read_c0_count(); - - mips_hpt_frequency = (end - start) * 10; - printk(KERN_INFO "MIPS counter frequency %dHz\n", mips_hpt_frequency); + mips_timer_state = gt641xx_timer0_state; } diff --git a/trunk/arch/mips/kernel/process.c b/trunk/arch/mips/kernel/process.c index 2c09a442e5e5..11cb264f59ce 100644 --- a/trunk/arch/mips/kernel/process.c +++ b/trunk/arch/mips/kernel/process.c @@ -77,8 +77,9 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp) unsigned long status; /* New thread loses kernel privileges. */ - status = regs->cp0_status & ~(ST0_CU0|ST0_CU1|ST0_FR|KU_MASK); + status = regs->cp0_status & ~(ST0_CU0|ST0_CU1|KU_MASK); #ifdef CONFIG_64BIT + status &= ~ST0_FR; status |= test_thread_flag(TIF_32BIT_REGS) ? 0 : ST0_FR; #endif status |= KU_USER; diff --git a/trunk/arch/mips/kernel/time.c b/trunk/arch/mips/kernel/time.c index 1ecfbb7eba6c..52075426c373 100644 --- a/trunk/arch/mips/kernel/time.c +++ b/trunk/arch/mips/kernel/time.c @@ -109,6 +109,10 @@ void __cpuinit clockevent_set_clock(struct clock_event_device *cd, cd->mult = (u32) temp; } +void __init __weak plat_time_init(void) +{ +} + /* * This function exists in order to cause an error due to a duplicate * definition if platform code should have its own implementation. The hook diff --git a/trunk/arch/mips/kernel/traps.c b/trunk/arch/mips/kernel/traps.c index fcae66752972..23e73d0650a3 100644 --- a/trunk/arch/mips/kernel/traps.c +++ b/trunk/arch/mips/kernel/traps.c @@ -1317,12 +1317,12 @@ void __init per_cpu_trap_init(void) #endif if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV) status_set |= ST0_XX; - if (cpu_has_dsp) - status_set |= ST0_MX; - change_c0_status(ST0_CU|ST0_MX|ST0_RE|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX, status_set); + if (cpu_has_dsp) + set_c0_status(ST0_MX); + #ifdef CONFIG_CPU_MIPSR2 if (cpu_has_mips_r2) { unsigned int enable = 0x0000000f; diff --git a/trunk/arch/mips/mips-boards/generic/memory.c b/trunk/arch/mips/mips-boards/generic/memory.c index 2c5c27c8e86d..dc272c188233 100644 --- a/trunk/arch/mips/mips-boards/generic/memory.c +++ b/trunk/arch/mips/mips-boards/generic/memory.c @@ -169,7 +169,6 @@ void __init prom_meminit(void) void __init prom_free_prom_memory(void) { -#if 0 /* for now ... */ unsigned long addr; int i; @@ -181,5 +180,4 @@ void __init prom_free_prom_memory(void) free_init_pages("prom memory", addr, addr + boot_mem_map.map[i].size); } -#endif } diff --git a/trunk/arch/mips/pci/pci.c b/trunk/arch/mips/pci/pci.c index 6e6981fd7934..589b745d822a 100644 --- a/trunk/arch/mips/pci/pci.c +++ b/trunk/arch/mips/pci/pci.c @@ -242,8 +242,6 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev, for (i = 0; i < PCI_NUM_RESOURCES; i++) { if (!dev->resource[i].start) continue; - if (dev->resource[i].flags & IORESOURCE_PCI_FIXED) - continue; if (dev->resource[i].flags & IORESOURCE_IO) offset = hose->io_offset; else if (dev->resource[i].flags & IORESOURCE_MEM) diff --git a/trunk/arch/powerpc/configs/mpc8272_ads_defconfig b/trunk/arch/powerpc/configs/mpc8272_ads_defconfig index 5eae305215dc..a31b7a030a6b 100644 --- a/trunk/arch/powerpc/configs/mpc8272_ads_defconfig +++ b/trunk/arch/powerpc/configs/mpc8272_ads_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.24-rc5 -# Thu Dec 13 22:40:57 2007 +# Linux kernel version: 2.6.24-rc4 +# Thu Dec 6 16:48:30 2007 # # CONFIG_PPC64 is not set @@ -491,7 +491,7 @@ CONFIG_MII=y CONFIG_FS_ENET=y # CONFIG_FS_ENET_HAS_SCC is not set CONFIG_FS_ENET_HAS_FCC=y -CONFIG_FS_ENET_MDIO_FCC=y +# CONFIG_FS_ENET_MDIO_FCC is not set CONFIG_NETDEV_1000=y # CONFIG_ACENIC is not set # CONFIG_DL2K is not set diff --git a/trunk/arch/powerpc/configs/pq2fads_defconfig b/trunk/arch/powerpc/configs/pq2fads_defconfig index a3bfbb65a933..142d206d6870 100644 --- a/trunk/arch/powerpc/configs/pq2fads_defconfig +++ b/trunk/arch/powerpc/configs/pq2fads_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.24-rc5 -# Thu Dec 13 22:39:18 2007 +# Linux kernel version: 2.6.24-rc4 +# Thu Dec 6 16:49:09 2007 # # CONFIG_PPC64 is not set @@ -548,7 +548,7 @@ CONFIG_MII=y CONFIG_FS_ENET=y # CONFIG_FS_ENET_HAS_SCC is not set CONFIG_FS_ENET_HAS_FCC=y -CONFIG_FS_ENET_MDIO_FCC=y +# CONFIG_FS_ENET_MDIO_FCC is not set CONFIG_NETDEV_1000=y # CONFIG_ACENIC is not set # CONFIG_DL2K is not set diff --git a/trunk/arch/powerpc/configs/ps3_defconfig b/trunk/arch/powerpc/configs/ps3_defconfig index 0b5469fb6e0f..5bd547ecd60a 100644 --- a/trunk/arch/powerpc/configs/ps3_defconfig +++ b/trunk/arch/powerpc/configs/ps3_defconfig @@ -157,7 +157,7 @@ CONFIG_PS3_HTAB_SIZE=20 CONFIG_PS3_USE_LPAR_ADDR=y CONFIG_PS3_VUART=y CONFIG_PS3_PS3AV=y -CONFIG_PS3_SYS_MANAGER=y +CONFIG_PS3_SYS_MANAGER=m CONFIG_PS3_STORAGE=y CONFIG_PS3_DISK=y CONFIG_PS3_ROM=y diff --git a/trunk/arch/powerpc/kernel/ppc_ksyms.c b/trunk/arch/powerpc/kernel/ppc_ksyms.c index 13ebeb2d71e6..c6b1aa3efbb9 100644 --- a/trunk/arch/powerpc/kernel/ppc_ksyms.c +++ b/trunk/arch/powerpc/kernel/ppc_ksyms.c @@ -45,6 +45,10 @@ #include #include +#ifdef CONFIG_8xx +#include +#endif + #ifdef CONFIG_PPC64 EXPORT_SYMBOL(local_irq_restore); #endif @@ -168,6 +172,14 @@ EXPORT_SYMBOL(console_drivers); EXPORT_SYMBOL(cacheable_memcpy); #endif +#ifdef CONFIG_8xx +EXPORT_SYMBOL(cpm_install_handler); +EXPORT_SYMBOL(cpm_free_handler); +#endif /* CONFIG_8xx */ +#if defined(CONFIG_8xx) +EXPORT_SYMBOL(__res); +#endif + #ifdef CONFIG_PPC32 EXPORT_SYMBOL(next_mmu_context); EXPORT_SYMBOL(set_context); diff --git a/trunk/arch/powerpc/math-emu/op-2.h b/trunk/arch/powerpc/math-emu/op-2.h index 7d6f17cc2929..b9b06b4c6ea1 100644 --- a/trunk/arch/powerpc/math-emu/op-2.h +++ b/trunk/arch/powerpc/math-emu/op-2.h @@ -59,8 +59,7 @@ else \ { \ X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \ - (((X##_f1 << (2 * _FP_W_TYPE_SIZE - (N))) | \ - X##_f0) != 0)); \ + (((X##_f1 << (sz - (N))) | X##_f0) != 0)); \ X##_f1 = 0; \ } \ } while (0) diff --git a/trunk/arch/powerpc/platforms/iseries/lpevents.c b/trunk/arch/powerpc/platforms/iseries/lpevents.c index 275f49449839..34bdbbe3ce59 100644 --- a/trunk/arch/powerpc/platforms/iseries/lpevents.c +++ b/trunk/arch/powerpc/platforms/iseries/lpevents.c @@ -121,7 +121,6 @@ void process_hvlpevents(void) { struct HvLpEvent * event; - restart: /* If we have recursed, just return */ if (!spin_trylock(&hvlpevent_queue.hq_lock)) return; @@ -147,20 +146,8 @@ void process_hvlpevents(void) if (event->xType < HvLpEvent_Type_NumTypes && lpEventHandler[event->xType]) lpEventHandler[event->xType](event); - else { - u8 type = event->xType; - - /* - * Don't printk in the spinlock as printk - * may require ack events form the HV to send - * any characters there. - */ - hvlpevent_clear_valid(event); - spin_unlock(&hvlpevent_queue.hq_lock); - printk(KERN_INFO - "Unexpected Lp Event type=%d\n", type); - goto restart; - } + else + printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); hvlpevent_clear_valid(event); } else if (hvlpevent_queue.hq_overflow_pending) diff --git a/trunk/arch/powerpc/platforms/ps3/Kconfig b/trunk/arch/powerpc/platforms/ps3/Kconfig index 298f1c9679fb..67144d1d1405 100644 --- a/trunk/arch/powerpc/platforms/ps3/Kconfig +++ b/trunk/arch/powerpc/platforms/ps3/Kconfig @@ -91,7 +91,7 @@ config PS3_SYS_MANAGER depends on PPC_PS3 tristate "PS3 System Manager driver" if PS3_ADVANCED select PS3_VUART - default y + default m help Include support for the PS3 System Manager. diff --git a/trunk/arch/powerpc/sysdev/cpm2_common.c b/trunk/arch/powerpc/sysdev/cpm2_common.c index c1d824032020..859362fecb7c 100644 --- a/trunk/arch/powerpc/sysdev/cpm2_common.c +++ b/trunk/arch/powerpc/sysdev/cpm2_common.c @@ -61,7 +61,8 @@ cpm2_map_t __iomem *cpm2_immr; of space for CPM as it is larger than on PQ2 */ -void __init cpm2_reset(void) +void +cpm2_reset(void) { #ifdef CONFIG_PPC_85xx cpm2_immr = ioremap(CPM_MAP_ADDR, CPM_MAP_SIZE); diff --git a/trunk/arch/sparc64/kernel/entry.S b/trunk/arch/sparc64/kernel/entry.S index ea257e828364..c9b0d7af64ae 100644 --- a/trunk/arch/sparc64/kernel/entry.S +++ b/trunk/arch/sparc64/kernel/entry.S @@ -2593,15 +2593,3 @@ sun4v_mmustat_info: retl nop .size sun4v_mmustat_info, .-sun4v_mmustat_info - - .globl sun4v_mmu_demap_all - .type sun4v_mmu_demap_all,#function -sun4v_mmu_demap_all: - clr %o0 - clr %o1 - mov HV_MMU_ALL, %o2 - mov HV_FAST_MMU_DEMAP_ALL, %o5 - ta HV_FAST_TRAP - retl - nop - .size sun4v_mmu_demap_all, .-sun4v_mmu_demap_all diff --git a/trunk/arch/sparc64/kernel/smp.c b/trunk/arch/sparc64/kernel/smp.c index c39944927f1a..894b506f9636 100644 --- a/trunk/arch/sparc64/kernel/smp.c +++ b/trunk/arch/sparc64/kernel/smp.c @@ -476,7 +476,7 @@ static inline void spitfire_xcall_deliver(u64 data0, u64 data1, u64 data2, cpuma */ static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask) { - u64 pstate, ver, busy_mask; + u64 pstate, ver; int nack_busy_id, is_jbus, need_more; if (cpus_empty(mask)) @@ -508,20 +508,14 @@ static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mas "i" (ASI_INTR_W)); nack_busy_id = 0; - busy_mask = 0; { int i; for_each_cpu_mask(i, mask) { u64 target = (i << 14) | 0x70; - if (is_jbus) { - busy_mask |= (0x1UL << (i * 2)); - } else { + if (!is_jbus) target |= (nack_busy_id << 24); - busy_mask |= (0x1UL << - (nack_busy_id * 2)); - } __asm__ __volatile__( "stxa %%g0, [%0] %1\n\t" "membar #Sync\n\t" @@ -537,16 +531,15 @@ static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mas /* Now, poll for completion. */ { - u64 dispatch_stat, nack_mask; + u64 dispatch_stat; long stuck; stuck = 100000 * nack_busy_id; - nack_mask = busy_mask << 1; do { __asm__ __volatile__("ldxa [%%g0] %1, %0" : "=r" (dispatch_stat) : "i" (ASI_INTR_DISPATCH_STAT)); - if (!(dispatch_stat & (busy_mask | nack_mask))) { + if (dispatch_stat == 0UL) { __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate)); if (unlikely(need_more)) { @@ -563,12 +556,12 @@ static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mas } if (!--stuck) break; - } while (dispatch_stat & busy_mask); + } while (dispatch_stat & 0x5555555555555555UL); __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate)); - if (dispatch_stat & busy_mask) { + if ((dispatch_stat & ~(0x5555555555555555UL)) == 0) { /* Busy bits will not clear, continue instead * of freezing up on this cpu. */ diff --git a/trunk/arch/sparc64/mm/init.c b/trunk/arch/sparc64/mm/init.c index fbeb55d71e76..e18ccf85224f 100644 --- a/trunk/arch/sparc64/mm/init.c +++ b/trunk/arch/sparc64/mm/init.c @@ -1133,9 +1133,14 @@ static void __init mark_kpte_bitmap(unsigned long start, unsigned long end) } } -static void __init init_kpte_bitmap(void) +static void __init kernel_physical_mapping_init(void) { unsigned long i; +#ifdef CONFIG_DEBUG_PAGEALLOC + unsigned long mem_alloced = 0UL; +#endif + + read_obp_memory("reg", &pall[0], &pall_ents); for (i = 0; i < pall_ents; i++) { unsigned long phys_start, phys_end; @@ -1144,24 +1149,14 @@ static void __init init_kpte_bitmap(void) phys_end = phys_start + pall[i].reg_size; mark_kpte_bitmap(phys_start, phys_end); - } -} -static void __init kernel_physical_mapping_init(void) -{ #ifdef CONFIG_DEBUG_PAGEALLOC - unsigned long i, mem_alloced = 0UL; - - for (i = 0; i < pall_ents; i++) { - unsigned long phys_start, phys_end; - - phys_start = pall[i].phys_addr; - phys_end = phys_start + pall[i].reg_size; - mem_alloced += kernel_map_range(phys_start, phys_end, PAGE_KERNEL); +#endif } +#ifdef CONFIG_DEBUG_PAGEALLOC printk("Allocated %ld bytes for kernel page tables.\n", mem_alloced); @@ -1403,10 +1398,6 @@ void __init paging_init(void) inherit_prom_mappings(); - read_obp_memory("reg", &pall[0], &pall_ents); - - init_kpte_bitmap(); - /* Ok, we can use our TLB miss and window trap handlers safely. */ setup_tba(); @@ -1913,9 +1904,7 @@ void __flush_tlb_all(void) "wrpr %0, %1, %%pstate" : "=r" (pstate) : "i" (PSTATE_IE)); - if (tlb_type == hypervisor) { - sun4v_mmu_demap_all(); - } else if (tlb_type == spitfire) { + if (tlb_type == spitfire) { for (i = 0; i < 64; i++) { /* Spitfire Errata #32 workaround */ /* NOTE: Always runs on spitfire, so no diff --git a/trunk/drivers/acpi/battery.c b/trunk/drivers/acpi/battery.c index 8f7505d304b5..7d6be23eff89 100644 --- a/trunk/drivers/acpi/battery.c +++ b/trunk/drivers/acpi/battery.c @@ -125,7 +125,7 @@ static int acpi_battery_technology(struct acpi_battery *battery) return POWER_SUPPLY_TECHNOLOGY_NiMH; if (!strcasecmp("LION", battery->type)) return POWER_SUPPLY_TECHNOLOGY_LION; - if (!strncasecmp("LI-ION", battery->type, 6)) + if (!strcasecmp("LI-ION", battery->type)) return POWER_SUPPLY_TECHNOLOGY_LION; if (!strcasecmp("LiP", battery->type)) return POWER_SUPPLY_TECHNOLOGY_LIPO; diff --git a/trunk/drivers/acpi/numa.c b/trunk/drivers/acpi/numa.c index 0822d9fc1cb4..ab04d848b19d 100644 --- a/trunk/drivers/acpi/numa.c +++ b/trunk/drivers/acpi/numa.c @@ -38,9 +38,9 @@ ACPI_MODULE_NAME("numa"); static nodemask_t nodes_found_map = NODE_MASK_NONE; /* maps to convert between proximity domain and logical node ID */ -static int pxm_to_node_map[MAX_PXM_DOMAINS] +static int __cpuinitdata pxm_to_node_map[MAX_PXM_DOMAINS] = { [0 ... MAX_PXM_DOMAINS - 1] = NID_INVAL }; -static int node_to_pxm_map[MAX_NUMNODES] +static int __cpuinitdata node_to_pxm_map[MAX_NUMNODES] = { [0 ... MAX_NUMNODES - 1] = PXM_INVAL }; int pxm_to_node(int pxm) diff --git a/trunk/drivers/acpi/pci_bind.c b/trunk/drivers/acpi/pci_bind.c index 388300de005d..028969370bbf 100644 --- a/trunk/drivers/acpi/pci_bind.c +++ b/trunk/drivers/acpi/pci_bind.c @@ -294,6 +294,9 @@ int acpi_pci_unbind(struct acpi_device *device) acpi_get_data(device->handle, acpi_pci_data_handler, (void **)&data); if (ACPI_FAILURE(status)) { + ACPI_EXCEPTION((AE_INFO, status, + "Unable to get data from device %s", + acpi_device_bid(device))); result = -ENODEV; goto end; } diff --git a/trunk/drivers/acpi/sbs.c b/trunk/drivers/acpi/sbs.c index 22cb95b349e4..6045cdbe176b 100644 --- a/trunk/drivers/acpi/sbs.c +++ b/trunk/drivers/acpi/sbs.c @@ -54,6 +54,12 @@ #define ACPI_BATTERY_DIR_NAME "BAT%i" #define ACPI_AC_DIR_NAME "AC0" +enum acpi_sbs_device_addr { + ACPI_SBS_CHARGER = 0x9, + ACPI_SBS_MANAGER = 0xa, + ACPI_SBS_BATTERY = 0xb, +}; + #define ACPI_SBS_NOTIFY_STATUS 0x80 #define ACPI_SBS_NOTIFY_INFO 0x81 @@ -533,7 +539,7 @@ static struct proc_dir_entry *acpi_battery_dir = NULL; static inline char *acpi_battery_units(struct acpi_battery *battery) { - return acpi_battery_mode(battery) ? " mW" : " mA"; + return acpi_battery_mode(battery) ? " mWh" : " mAh"; } @@ -550,10 +556,10 @@ static int acpi_battery_read_info(struct seq_file *seq, void *offset) if (!battery->present) goto end; - seq_printf(seq, "design capacity: %i%sh\n", + seq_printf(seq, "design capacity: %i%s\n", battery->design_capacity * acpi_battery_scale(battery), acpi_battery_units(battery)); - seq_printf(seq, "last full capacity: %i%sh\n", + seq_printf(seq, "last full capacity: %i%s\n", battery->full_charge_capacity * acpi_battery_scale(battery), acpi_battery_units(battery)); seq_printf(seq, "battery technology: rechargeable\n"); @@ -584,7 +590,7 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset) { struct acpi_battery *battery = seq->private; struct acpi_sbs *sbs = battery->sbs; - int rate; + int result = 0; mutex_lock(&sbs->lock); seq_printf(seq, "present: %s\n", @@ -598,12 +604,9 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset) seq_printf(seq, "charging state: %s\n", (battery->current_now < 0) ? "discharging" : ((battery->current_now > 0) ? "charging" : "charged")); - rate = abs(battery->current_now) * acpi_battery_ipscale(battery); - rate *= (acpi_battery_mode(battery))?(battery->voltage_now * - acpi_battery_vscale(battery)/1000):1; - seq_printf(seq, "present rate: %d%s\n", rate, - acpi_battery_units(battery)); - seq_printf(seq, "remaining capacity: %i%sh\n", + seq_printf(seq, "present rate: %d mA\n", + abs(battery->current_now) * acpi_battery_ipscale(battery)); + seq_printf(seq, "remaining capacity: %i%s\n", battery->capacity_now * acpi_battery_scale(battery), acpi_battery_units(battery)); seq_printf(seq, "present voltage: %i mV\n", @@ -611,7 +614,7 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset) end: mutex_unlock(&sbs->lock); - return 0; + return result; } static int acpi_battery_state_open_fs(struct inode *inode, struct file *file) @@ -635,7 +638,7 @@ static int acpi_battery_read_alarm(struct seq_file *seq, void *offset) acpi_battery_get_alarm(battery); seq_printf(seq, "alarm: "); if (battery->alarm_capacity) - seq_printf(seq, "%i%sh\n", + seq_printf(seq, "%i%s\n", battery->alarm_capacity * acpi_battery_scale(battery), acpi_battery_units(battery)); diff --git a/trunk/drivers/acpi/sbshc.c b/trunk/drivers/acpi/sbshc.c index fd40b6a1d639..046d7c3ed356 100644 --- a/trunk/drivers/acpi/sbshc.c +++ b/trunk/drivers/acpi/sbshc.c @@ -202,9 +202,10 @@ int acpi_smbus_unregister_callback(struct acpi_smb_hc *hc) EXPORT_SYMBOL_GPL(acpi_smbus_unregister_callback); -static inline void acpi_smbus_callback(void *context) +static void acpi_smbus_callback(void *context) { struct acpi_smb_hc *hc = context; + if (hc->callback) hc->callback(hc->context); } @@ -213,7 +214,6 @@ static int smbus_alarm(void *context) { struct acpi_smb_hc *hc = context; union acpi_smb_status status; - u8 address; if (smb_hc_read(hc, ACPI_SMB_STATUS, &status.raw)) return 0; /* Check if it is only a completion notify */ @@ -222,18 +222,9 @@ static int smbus_alarm(void *context) if (!status.fields.alarm) return 0; mutex_lock(&hc->lock); - smb_hc_read(hc, ACPI_SMB_ALARM_ADDRESS, &address); - status.fields.alarm = 0; smb_hc_write(hc, ACPI_SMB_STATUS, status.raw); - /* We are only interested in events coming from known devices */ - switch (address >> 1) { - case ACPI_SBS_CHARGER: - case ACPI_SBS_MANAGER: - case ACPI_SBS_BATTERY: - acpi_os_execute(OSL_GPE_HANDLER, - acpi_smbus_callback, hc); - default:; - } + if (hc->callback) + acpi_os_execute(OSL_GPE_HANDLER, acpi_smbus_callback, hc); mutex_unlock(&hc->lock); return 0; } diff --git a/trunk/drivers/acpi/sbshc.h b/trunk/drivers/acpi/sbshc.h index a57b0762dd7f..3bda3491a97b 100644 --- a/trunk/drivers/acpi/sbshc.h +++ b/trunk/drivers/acpi/sbshc.h @@ -16,12 +16,6 @@ enum acpi_smb_protocol { static const u8 SMBUS_PEC = 0x80; -enum acpi_sbs_device_addr { - ACPI_SBS_CHARGER = 0x9, - ACPI_SBS_MANAGER = 0xa, - ACPI_SBS_BATTERY = 0xb, -}; - typedef void (*smbus_alarm_callback)(void *context); extern int acpi_smbus_read(struct acpi_smb_hc *hc, u8 protocol, u8 address, diff --git a/trunk/drivers/acpi/video.c b/trunk/drivers/acpi/video.c index bd77e81e81c1..44a0d9ba9bd6 100644 --- a/trunk/drivers/acpi/video.c +++ b/trunk/drivers/acpi/video.c @@ -577,7 +577,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device) struct acpi_video_device_brightness *br = NULL; - memset(&device->cap, 0, sizeof(device->cap)); + memset(&device->cap, 0, 4); if (ACPI_SUCCESS(acpi_get_handle(device->dev->handle, "_ADR", &h_dummy1))) { device->cap._ADR = 1; @@ -697,7 +697,7 @@ static void acpi_video_bus_find_cap(struct acpi_video_bus *video) { acpi_handle h_dummy1; - memset(&video->cap, 0, sizeof(video->cap)); + memset(&video->cap, 0, 4); if (ACPI_SUCCESS(acpi_get_handle(video->device->handle, "_DOS", &h_dummy1))) { video->cap._DOS = 1; } diff --git a/trunk/drivers/atm/fore200e.c b/trunk/drivers/atm/fore200e.c index f97e050338f0..8b12925fe7a4 100644 --- a/trunk/drivers/atm/fore200e.c +++ b/trunk/drivers/atm/fore200e.c @@ -2689,7 +2689,7 @@ fore200e_init(struct fore200e* fore200e) return 0; } -#ifdef CONFIG_ATM_FORE200E_PCA + static int __devinit fore200e_pca_detect(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent) { @@ -2756,6 +2756,7 @@ static void __devexit fore200e_pca_remove_one(struct pci_dev *pci_dev) } +#ifdef CONFIG_ATM_FORE200E_PCA static struct pci_device_id fore200e_pca_tbl[] = { { PCI_VENDOR_ID_FORE, PCI_DEVICE_ID_FORE_PCA200E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &fore200e_bus[0] }, diff --git a/trunk/drivers/i2c/busses/i2c-davinci.c b/trunk/drivers/i2c/busses/i2c-davinci.c index 67679882ebef..bd7aaff35240 100644 --- a/trunk/drivers/i2c/busses/i2c-davinci.c +++ b/trunk/drivers/i2c/busses/i2c-davinci.c @@ -404,7 +404,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) DAVINCI_I2C_STR_REG, w); } else - dev_err(dev->dev, "RDR IRQ while no " + dev_err(dev->dev, "RDR IRQ while no" "data requested\n"); break; @@ -423,7 +423,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) DAVINCI_I2C_IMR_REG, w); } else - dev_err(dev->dev, "TDR IRQ while no data to " + dev_err(dev->dev, "TDR IRQ while no data to" "send\n"); break; diff --git a/trunk/drivers/i2c/busses/i2c-gpio.c b/trunk/drivers/i2c/busses/i2c-gpio.c index 3ca19fc234fb..44e1cd21bb01 100644 --- a/trunk/drivers/i2c/busses/i2c-gpio.c +++ b/trunk/drivers/i2c/busses/i2c-gpio.c @@ -140,7 +140,6 @@ static int __init i2c_gpio_probe(struct platform_device *pdev) adap->owner = THIS_MODULE; snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); adap->algo_data = bit_data; - adap->class = I2C_CLASS_HWMON; adap->dev.parent = &pdev->dev; /* diff --git a/trunk/drivers/i2c/busses/i2c-omap.c b/trunk/drivers/i2c/busses/i2c-omap.c index cb55cf2ba1e9..89a30028ddb6 100644 --- a/trunk/drivers/i2c/busses/i2c-omap.c +++ b/trunk/drivers/i2c/busses/i2c-omap.c @@ -203,7 +203,7 @@ static int omap_i2c_init(struct omap_i2c_dev *dev) while (!(omap_i2c_read_reg(dev, OMAP_I2C_SYSS_REG) & OMAP_I2C_SYSS_RDONE)) { if (time_after(jiffies, timeout)) { - dev_warn(dev->dev, "timeout waiting " + dev_warn(dev->dev, "timeout waiting" "for controller reset\n"); return -ETIMEDOUT; } @@ -483,7 +483,7 @@ omap_i2c_isr(int this_irq, void *dev_id) dev->buf_len--; } } else - dev_err(dev->dev, "RRDY IRQ while no data " + dev_err(dev->dev, "RRDY IRQ while no data" "requested\n"); omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RRDY); continue; @@ -498,7 +498,7 @@ omap_i2c_isr(int this_irq, void *dev_id) dev->buf_len--; } } else - dev_err(dev->dev, "XRDY IRQ while no " + dev_err(dev->dev, "XRDY IRQ while no" "data to send\n"); omap_i2c_write_reg(dev, OMAP_I2C_DATA_REG, w); omap_i2c_ack_stat(dev, OMAP_I2C_STAT_XRDY); diff --git a/trunk/drivers/i2c/chips/isp1301_omap.c b/trunk/drivers/i2c/chips/isp1301_omap.c index b767603a07ba..fe04e46991aa 100644 --- a/trunk/drivers/i2c/chips/isp1301_omap.c +++ b/trunk/drivers/i2c/chips/isp1301_omap.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/drivers/infiniband/hw/ehca/ehca_qp.c b/trunk/drivers/infiniband/hw/ehca/ehca_qp.c index dd126681fed0..eff5fb55604b 100644 --- a/trunk/drivers/infiniband/hw/ehca/ehca_qp.c +++ b/trunk/drivers/infiniband/hw/ehca/ehca_qp.c @@ -838,7 +838,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd, /* copy back return values */ srq_init_attr->attr.max_wr = qp_init_attr.cap.max_recv_wr; - srq_init_attr->attr.max_sge = qp_init_attr.cap.max_recv_sge; + srq_init_attr->attr.max_sge = 3; /* drive SRQ into RTR state */ mqpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL); @@ -1750,7 +1750,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr) } srq_attr->max_wr = qpcb->max_nr_outst_recv_wr - 1; - srq_attr->max_sge = qpcb->actual_nr_sges_in_rq_wqe; + srq_attr->max_sge = 3; srq_attr->srq_limit = EHCA_BMASK_GET( MQPCB_CURR_SRQ_LIMIT, qpcb->curr_srq_limit); diff --git a/trunk/drivers/media/video/videobuf-core.c b/trunk/drivers/media/video/videobuf-core.c index 81f77d2b4bd3..de2f56b19163 100644 --- a/trunk/drivers/media/video/videobuf-core.c +++ b/trunk/drivers/media/video/videobuf-core.c @@ -806,7 +806,7 @@ ssize_t videobuf_read_one(struct videobuf_queue *q, } /* Locking: Caller holds q->lock */ -int __videobuf_read_start(struct videobuf_queue *q) +int videobuf_read_start(struct videobuf_queue *q) { enum v4l2_field field; unsigned long flags=0; @@ -862,17 +862,6 @@ static void __videobuf_read_stop(struct videobuf_queue *q) } -int videobuf_read_start(struct videobuf_queue *q) -{ - int rc; - - mutex_lock(&q->lock); - rc = __videobuf_read_start(q); - mutex_unlock(&q->lock); - - return rc; -} - void videobuf_read_stop(struct videobuf_queue *q) { mutex_lock(&q->lock); @@ -1069,7 +1058,6 @@ EXPORT_SYMBOL_GPL(videobuf_dqbuf); EXPORT_SYMBOL_GPL(videobuf_streamon); EXPORT_SYMBOL_GPL(videobuf_streamoff); -EXPORT_SYMBOL_GPL(videobuf_read_start); EXPORT_SYMBOL_GPL(videobuf_read_stop); EXPORT_SYMBOL_GPL(videobuf_stop); EXPORT_SYMBOL_GPL(videobuf_read_stream); diff --git a/trunk/drivers/misc/thinkpad_acpi.c b/trunk/drivers/misc/thinkpad_acpi.c index cf56647a6ca4..ab23a3221585 100644 --- a/trunk/drivers/misc/thinkpad_acpi.c +++ b/trunk/drivers/misc/thinkpad_acpi.c @@ -987,9 +987,9 @@ static int __init hotkey_init(struct ibm_init_struct *iibm) KEY_UNKNOWN, /* 0x0C: FN+BACKSPACE */ KEY_UNKNOWN, /* 0x0D: FN+INSERT */ KEY_UNKNOWN, /* 0x0E: FN+DELETE */ - KEY_RESERVED, /* 0x0F: FN+HOME (brightness up) */ + KEY_BRIGHTNESSUP, /* 0x0F: FN+HOME (brightness up) */ /* Scan codes 0x10 to 0x1F: Extended ACPI HKEY hot keys */ - KEY_RESERVED, /* 0x10: FN+END (brightness down) */ + KEY_BRIGHTNESSDOWN, /* 0x10: FN+END (brightness down) */ KEY_RESERVED, /* 0x11: FN+PGUP (thinklight toggle) */ KEY_UNKNOWN, /* 0x12: FN+PGDOWN */ KEY_ZOOM, /* 0x13: FN+SPACE (zoom) */ diff --git a/trunk/drivers/net/fs_enet/mac-scc.c b/trunk/drivers/net/fs_enet/mac-scc.c index 48f2f3005935..03134f47a4eb 100644 --- a/trunk/drivers/net/fs_enet/mac-scc.c +++ b/trunk/drivers/net/fs_enet/mac-scc.c @@ -158,7 +158,7 @@ static int setup_data(struct net_device *dev) { struct fs_enet_private *fep = netdev_priv(dev); -#ifndef CONFIG_PPC_CPM_NEW_BINDING +#ifdef CONFIG_PPC_CPM_NEW_BINDING struct fs_platform_info *fpi = fep->fpi; fep->scc.idx = fs_get_scc_index(fpi->fs_no); diff --git a/trunk/drivers/net/irda/irda-usb.c b/trunk/drivers/net/irda/irda-usb.c index 9081234ab458..c6355c00fd7a 100644 --- a/trunk/drivers/net/irda/irda-usb.c +++ b/trunk/drivers/net/irda/irda-usb.c @@ -1168,7 +1168,6 @@ static int stir421x_patch_device(struct irda_usb_cb *self) static int irda_usb_net_open(struct net_device *netdev) { struct irda_usb_cb *self; - unsigned long flags; char hwname[16]; int i; @@ -1178,16 +1177,13 @@ static int irda_usb_net_open(struct net_device *netdev) self = (struct irda_usb_cb *) netdev->priv; IRDA_ASSERT(self != NULL, return -1;); - spin_lock_irqsave(&self->lock, flags); /* Can only open the device if it's there */ if(!self->present) { - spin_unlock_irqrestore(&self->lock, flags); IRDA_WARNING("%s(), device not present!\n", __FUNCTION__); return -1; } if(self->needspatch) { - spin_unlock_irqrestore(&self->lock, flags); IRDA_WARNING("%s(), device needs patch\n", __FUNCTION__) ; return -EIO ; } @@ -1202,7 +1198,6 @@ static int irda_usb_net_open(struct net_device *netdev) /* To do *before* submitting Rx urbs and starting net Tx queue * Jean II */ self->netopen = 1; - spin_unlock_irqrestore(&self->lock, flags); /* * Now that everything should be initialized properly, diff --git a/trunk/drivers/net/irda/mcs7780.c b/trunk/drivers/net/irda/mcs7780.c index 93916cf33f29..0b769192d4ce 100644 --- a/trunk/drivers/net/irda/mcs7780.c +++ b/trunk/drivers/net/irda/mcs7780.c @@ -677,8 +677,6 @@ static int mcs_net_close(struct net_device *netdev) /* Stop transmit processing */ netif_stop_queue(netdev); - kfree_skb(mcs->rx_buff.skb); - /* kill and free the receive and transmit URBs */ usb_kill_urb(mcs->rx_urb); usb_free_urb(mcs->rx_urb); diff --git a/trunk/drivers/net/irda/stir4200.c b/trunk/drivers/net/irda/stir4200.c index e59c485bc497..042bc2f0417d 100644 --- a/trunk/drivers/net/irda/stir4200.c +++ b/trunk/drivers/net/irda/stir4200.c @@ -142,6 +142,9 @@ enum StirCtrl2Mask { }; enum StirFifoCtlMask { + FIFOCTL_EOF = 0x80, + FIFOCTL_UNDER = 0x40, + FIFOCTL_OVER = 0x20, FIFOCTL_DIR = 0x10, FIFOCTL_CLR = 0x08, FIFOCTL_EMPTY = 0x04, @@ -591,10 +594,9 @@ static int fifo_txwait(struct stir_cb *stir, int space) { int err; unsigned long count, status; - unsigned long prev_count = 0x1fff; /* Read FIFO status and count */ - for (;; prev_count = count) { + for(;;) { err = read_reg(stir, REG_FIFOCTL, stir->fifo_status, FIFO_REGS_SIZE); if (unlikely(err != FIFO_REGS_SIZE)) { @@ -627,10 +629,6 @@ static int fifo_txwait(struct stir_cb *stir, int space) if (space >= 0 && STIR_FIFO_SIZE - 4 > space + count) return 0; - /* queue confused */ - if (prev_count < count) - break; - /* estimate transfer time for remaining chars */ msleep((count * 8000) / stir->speed); } diff --git a/trunk/drivers/net/wan/syncppp.c b/trunk/drivers/net/wan/syncppp.c index 61e24b7a45a3..232ecba5340f 100644 --- a/trunk/drivers/net/wan/syncppp.c +++ b/trunk/drivers/net/wan/syncppp.c @@ -107,24 +107,24 @@ struct ppp_header { u8 address; u8 control; - __be16 protocol; + u16 protocol; }; #define PPP_HEADER_LEN sizeof (struct ppp_header) struct lcp_header { u8 type; u8 ident; - __be16 len; + u16 len; }; #define LCP_HEADER_LEN sizeof (struct lcp_header) struct cisco_packet { - __be32 type; - __be32 par1; - __be32 par2; - __be16 rel; - __be16 time0; - __be16 time1; + u32 type; + u32 par1; + u32 par2; + u16 rel; + u16 time0; + u16 time1; }; #define CISCO_PACKET_LEN 18 #define CISCO_BIG_PACKET_LEN 20 @@ -139,7 +139,7 @@ static struct sk_buff_head tx_queue; static void sppp_keepalive (unsigned long dummy); static void sppp_cp_send (struct sppp *sp, u16 proto, u8 type, u8 ident, u16 len, void *data); -static void sppp_cisco_send (struct sppp *sp, int type, u32 par1, u32 par2); +static void sppp_cisco_send (struct sppp *sp, int type, long par1, long par2); static void sppp_lcp_input (struct sppp *sp, struct sk_buff *m); static void sppp_cisco_input (struct sppp *sp, struct sk_buff *m); static void sppp_ipcp_input (struct sppp *sp, struct sk_buff *m); @@ -447,7 +447,7 @@ static void sppp_keepalive (unsigned long dummy) sppp_cisco_send (sp, CISCO_KEEPALIVE_REQ, ++sp->pp_seq, sp->pp_rseq); else if (sp->lcp.state == LCP_STATE_OPENED) { - __be32 nmagic = htonl (sp->lcp.magic); + long nmagic = htonl (sp->lcp.magic); sp->lcp.echoid = ++sp->pp_seq; sppp_cp_send (sp, PPP_LCP, LCP_ECHO_REQ, sp->lcp.echoid, 4, &nmagic); @@ -667,7 +667,7 @@ static void sppp_lcp_input (struct sppp *sp, struct sk_buff *skb) dev->name, len); break; } - if (ntohl (*(__be32*)(h+1)) == sp->lcp.magic) { + if (ntohl (*(long*)(h+1)) == sp->lcp.magic) { /* Line loopback mode detected. */ printk (KERN_WARNING "%s: loopback\n", dev->name); if_down (dev); @@ -680,7 +680,7 @@ static void sppp_lcp_input (struct sppp *sp, struct sk_buff *skb) sppp_lcp_open (sp); break; } - *(__be32 *)(h+1) = htonl (sp->lcp.magic); + *(long*)(h+1) = htonl (sp->lcp.magic); sppp_cp_send (sp, PPP_LCP, LCP_ECHO_REPLY, h->ident, len-4, h+1); break; case LCP_ECHO_REPLY: @@ -692,7 +692,7 @@ static void sppp_lcp_input (struct sppp *sp, struct sk_buff *skb) dev->name, len); break; } - if (ntohl(*(__be32 *)(h+1)) != sp->lcp.magic) + if (ntohl (*(long*)(h+1)) != sp->lcp.magic) sp->pp_alivecnt = 0; break; } @@ -765,7 +765,7 @@ static void sppp_cisco_input (struct sppp *sp, struct sk_buff *skb) { struct in_device *in_dev; struct in_ifaddr *ifa; - __be32 addr = 0, mask = htonl(~0U); /* FIXME: is the mask correct? */ + __be32 addr = 0, mask = ~0; /* FIXME: is the mask correct? */ #ifdef CONFIG_INET rcu_read_lock(); if ((in_dev = __in_dev_get_rcu(dev)) != NULL) @@ -782,7 +782,8 @@ static void sppp_cisco_input (struct sppp *sp, struct sk_buff *skb) } rcu_read_unlock(); #endif - sppp_cisco_send (sp, CISCO_ADDR_REPLY, ntohl(addr), ntohl(mask)); + /* I hope both addr and mask are in the net order */ + sppp_cisco_send (sp, CISCO_ADDR_REPLY, addr, mask); break; } } @@ -843,7 +844,7 @@ static void sppp_cp_send (struct sppp *sp, u16 proto, u8 type, * Send Cisco keepalive packet. */ -static void sppp_cisco_send (struct sppp *sp, int type, u32 par1, u32 par2) +static void sppp_cisco_send (struct sppp *sp, int type, long par1, long par2) { struct ppp_header *h; struct cisco_packet *ch; @@ -867,7 +868,7 @@ static void sppp_cisco_send (struct sppp *sp, int type, u32 par1, u32 par2) ch->type = htonl (type); ch->par1 = htonl (par1); ch->par2 = htonl (par2); - ch->rel = htons(0xffff); + ch->rel = -1; ch->time0 = htons ((u16) (t >> 16)); ch->time1 = htons ((u16) t); diff --git a/trunk/drivers/serial/suncore.c b/trunk/drivers/serial/suncore.c index 707c5b03bce9..70a09a3d5af0 100644 --- a/trunk/drivers/serial/suncore.c +++ b/trunk/drivers/serial/suncore.c @@ -23,36 +23,11 @@ #include "suncore.h" -static int sunserial_current_minor = 64; +int sunserial_current_minor = 64; -int sunserial_register_minors(struct uart_driver *drv, int count) -{ - int err = 0; - - drv->minor = sunserial_current_minor; - drv->nr += count; - /* Register the driver on the first call */ - if (drv->nr == count) - err = uart_register_driver(drv); - if (err == 0) { - sunserial_current_minor += count; - drv->tty_driver->name_base = drv->minor - 64; - } - return err; -} -EXPORT_SYMBOL(sunserial_register_minors); - -void sunserial_unregister_minors(struct uart_driver *drv, int count) -{ - drv->nr -= count; - sunserial_current_minor -= count; - - if (drv->nr == 0) - uart_unregister_driver(drv); -} -EXPORT_SYMBOL(sunserial_unregister_minors); +EXPORT_SYMBOL(sunserial_current_minor); -int __init sunserial_console_match(struct console *con, struct device_node *dp, +int sunserial_console_match(struct console *con, struct device_node *dp, struct uart_driver *drv, int line) { int off; @@ -158,6 +133,8 @@ sunserial_console_termios(struct console *con) con->cflag = cflag; } +EXPORT_SYMBOL(sunserial_console_termios); + /* Sun serial MOUSE auto baud rate detection. */ static struct mouse_baud_cflag { int baud; diff --git a/trunk/drivers/serial/suncore.h b/trunk/drivers/serial/suncore.h index 042668aa602e..829d7d65d6db 100644 --- a/trunk/drivers/serial/suncore.h +++ b/trunk/drivers/serial/suncore.h @@ -22,8 +22,7 @@ extern unsigned int suncore_mouse_baud_cflag_next(unsigned int, int *); extern int suncore_mouse_baud_detection(unsigned char, int); -extern int sunserial_register_minors(struct uart_driver *, int); -extern void sunserial_unregister_minors(struct uart_driver *, int); +extern int sunserial_current_minor; extern int sunserial_console_match(struct console *, struct device_node *, struct uart_driver *, int); diff --git a/trunk/drivers/serial/sunhv.c b/trunk/drivers/serial/sunhv.c index be0fe152891b..8ff900b09811 100644 --- a/trunk/drivers/serial/sunhv.c +++ b/trunk/drivers/serial/sunhv.c @@ -562,10 +562,16 @@ static int __devinit hv_probe(struct of_device *op, const struct of_device_id *m port->dev = &op->dev; - err = sunserial_register_minors(&sunhv_reg, 1); + sunhv_reg.minor = sunserial_current_minor; + sunhv_reg.nr = 1; + + err = uart_register_driver(&sunhv_reg); if (err) goto out_free_con_read_page; + sunhv_reg.tty_driver->name_base = sunhv_reg.minor - 64; + sunserial_current_minor += 1; + sunserial_console_match(&sunhv_console, op->node, &sunhv_reg, port->line); @@ -585,7 +591,8 @@ static int __devinit hv_probe(struct of_device *op, const struct of_device_id *m uart_remove_one_port(&sunhv_reg, port); out_unregister_driver: - sunserial_unregister_minors(&sunhv_reg, 1); + sunserial_current_minor -= 1; + uart_unregister_driver(&sunhv_reg); out_free_con_read_page: kfree(con_read_page); @@ -607,7 +614,8 @@ static int __devexit hv_remove(struct of_device *dev) uart_remove_one_port(&sunhv_reg, port); - sunserial_unregister_minors(&sunhv_reg, 1); + sunserial_current_minor -= 1; + uart_unregister_driver(&sunhv_reg); kfree(port); sunhv_port = NULL; diff --git a/trunk/drivers/serial/sunsab.c b/trunk/drivers/serial/sunsab.c index 543f93741e6f..ff610c23314b 100644 --- a/trunk/drivers/serial/sunsab.c +++ b/trunk/drivers/serial/sunsab.c @@ -832,6 +832,7 @@ static struct uart_driver sunsab_reg = { }; static struct uart_sunsab_port *sunsab_ports; +static int num_channels; #ifdef CONFIG_SERIAL_SUNSAB_CONSOLE @@ -1101,8 +1102,8 @@ static int __init sunsab_init(void) { struct device_node *dp; int err; - int num_channels = 0; + num_channels = 0; for_each_node_by_name(dp, "se") num_channels += 2; for_each_node_by_name(dp, "serial") { @@ -1116,14 +1117,20 @@ static int __init sunsab_init(void) if (!sunsab_ports) return -ENOMEM; + sunsab_reg.minor = sunserial_current_minor; + sunsab_reg.nr = num_channels; sunsab_reg.cons = SUNSAB_CONSOLE(); - err = sunserial_register_minors(&sunsab_reg, num_channels); + + err = uart_register_driver(&sunsab_reg); if (err) { kfree(sunsab_ports); sunsab_ports = NULL; return err; } + + sunsab_reg.tty_driver->name_base = sunsab_reg.minor - 64; + sunserial_current_minor += num_channels; } return of_register_driver(&sab_driver, &of_bus_type); @@ -1132,8 +1139,9 @@ static int __init sunsab_init(void) static void __exit sunsab_exit(void) { of_unregister_driver(&sab_driver); - if (sunsab_reg.nr) { - sunserial_unregister_minors(&sunsab_reg, sunsab_reg.nr); + if (num_channels) { + sunserial_current_minor -= num_channels; + uart_unregister_driver(&sunsab_reg); } kfree(sunsab_ports); diff --git a/trunk/drivers/serial/sunsu.c b/trunk/drivers/serial/sunsu.c index 4e2302d43ab1..e074943feff5 100644 --- a/trunk/drivers/serial/sunsu.c +++ b/trunk/drivers/serial/sunsu.c @@ -1528,12 +1528,14 @@ static struct of_platform_driver su_driver = { .remove = __devexit_p(su_remove), }; +static int num_uart; + static int __init sunsu_init(void) { struct device_node *dp; int err; - int num_uart = 0; + num_uart = 0; for_each_node_by_name(dp, "su") { if (su_get_type(dp) == SU_PORT_PORT) num_uart++; @@ -1550,22 +1552,26 @@ static int __init sunsu_init(void) } if (num_uart) { - err = sunserial_register_minors(&sunsu_reg, num_uart); + sunsu_reg.minor = sunserial_current_minor; + sunsu_reg.nr = num_uart; + err = uart_register_driver(&sunsu_reg); if (err) return err; + sunsu_reg.tty_driver->name_base = sunsu_reg.minor - 64; + sunserial_current_minor += num_uart; } err = of_register_driver(&su_driver, &of_bus_type); if (err && num_uart) - sunserial_unregister_minors(&sunsu_reg, num_uart); + uart_unregister_driver(&sunsu_reg); return err; } static void __exit sunsu_exit(void) { - if (sunsu_reg.nr) - sunserial_unregister_minors(&sunsu_reg, sunsu_reg.nr); + if (num_uart) + uart_unregister_driver(&sunsu_reg); } module_init(sunsu_init); diff --git a/trunk/drivers/serial/sunzilog.c b/trunk/drivers/serial/sunzilog.c index cb2e40506379..283bef0d24cb 100644 --- a/trunk/drivers/serial/sunzilog.c +++ b/trunk/drivers/serial/sunzilog.c @@ -63,6 +63,10 @@ readb(&((__channel)->control)) #endif +static int num_sunzilog; +#define NUM_SUNZILOG num_sunzilog +#define NUM_CHANNELS (NUM_SUNZILOG * 2) + #define ZS_CLOCK 4915200 /* Zilog input clock rate. */ #define ZS_CLOCK_DIVISOR 16 /* Divisor this driver uses. */ @@ -1027,19 +1031,18 @@ static struct uart_driver sunzilog_reg = { .major = TTY_MAJOR, }; -static int __init sunzilog_alloc_tables(int num_sunzilog) +static int __init sunzilog_alloc_tables(void) { struct uart_sunzilog_port *up; unsigned long size; - int num_channels = num_sunzilog * 2; int i; - size = num_channels * sizeof(struct uart_sunzilog_port); + size = NUM_CHANNELS * sizeof(struct uart_sunzilog_port); sunzilog_port_table = kzalloc(size, GFP_KERNEL); if (!sunzilog_port_table) return -ENOMEM; - for (i = 0; i < num_channels; i++) { + for (i = 0; i < NUM_CHANNELS; i++) { up = &sunzilog_port_table[i]; spin_lock_init(&up->port.lock); @@ -1047,13 +1050,13 @@ static int __init sunzilog_alloc_tables(int num_sunzilog) if (i == 0) sunzilog_irq_chain = up; - if (i < num_channels - 1) + if (i < NUM_CHANNELS - 1) up->next = up + 1; else up->next = NULL; } - size = num_sunzilog * sizeof(struct zilog_layout __iomem *); + size = NUM_SUNZILOG * sizeof(struct zilog_layout __iomem *); sunzilog_chip_regs = kzalloc(size, GFP_KERNEL); if (!sunzilog_chip_regs) { kfree(sunzilog_port_table); @@ -1493,28 +1496,34 @@ static int __init sunzilog_init(void) struct device_node *dp; int err, uart_count; int num_keybms; - int num_sunzilog = 0; + NUM_SUNZILOG = 0; num_keybms = 0; for_each_node_by_name(dp, "zs") { - num_sunzilog++; + NUM_SUNZILOG++; if (of_find_property(dp, "keyboard", NULL)) num_keybms++; } uart_count = 0; - if (num_sunzilog) { + if (NUM_SUNZILOG) { int uart_count; - err = sunzilog_alloc_tables(num_sunzilog); + err = sunzilog_alloc_tables(); if (err) goto out; - uart_count = (num_sunzilog * 2) - (2 * num_keybms); + uart_count = (NUM_SUNZILOG * 2) - (2 * num_keybms); - err = sunserial_register_minors(&sunzilog_reg, uart_count); + sunzilog_reg.nr = uart_count; + sunzilog_reg.minor = sunserial_current_minor; + err = uart_register_driver(&sunzilog_reg); if (err) goto out_free_tables; + + sunzilog_reg.tty_driver->name_base = sunzilog_reg.minor - 64; + + sunserial_current_minor += uart_count; } err = of_register_driver(&zs_driver, &of_bus_type); @@ -1548,8 +1557,8 @@ static int __init sunzilog_init(void) of_unregister_driver(&zs_driver); out_unregister_uart: - if (num_sunzilog) { - sunserial_unregister_minors(&sunzilog_reg, num_sunzilog); + if (NUM_SUNZILOG) { + uart_unregister_driver(&sunzilog_reg); sunzilog_reg.cons = NULL; } @@ -1581,8 +1590,8 @@ static void __exit sunzilog_exit(void) zilog_irq = -1; } - if (sunzilog_reg.nr) { - sunserial_unregister_minors(&sunzilog_reg, sunzilog_reg.nr); + if (NUM_SUNZILOG) { + uart_unregister_driver(&sunzilog_reg); sunzilog_free_tables(); } } diff --git a/trunk/include/asm-arm/arch-pxa/pxa-regs.h b/trunk/include/asm-arm/arch-pxa/pxa-regs.h index 1bd398da07da..6b33df6f1995 100644 --- a/trunk/include/asm-arm/arch-pxa/pxa-regs.h +++ b/trunk/include/asm-arm/arch-pxa/pxa-regs.h @@ -1784,7 +1784,6 @@ #define CCCR_M_MASK 0x0060 /* Memory Frequency to Run Mode Frequency Multiplier */ #define CCCR_L_MASK 0x001f /* Crystal Frequency to Memory Frequency Multiplier */ -#define CKEN_AC97CONF (31) /* AC97 Controller Configuration */ #define CKEN_CAMERA (24) /* Camera Interface Clock Enable */ #define CKEN_SSP1 (23) /* SSP1 Unit Clock Enable */ #define CKEN_MEMC (22) /* Memory Controller Clock Enable */ diff --git a/trunk/include/asm-mips/mach-au1x00/au1000.h b/trunk/include/asm-mips/mach-au1x00/au1000.h index cb18af989645..bf7701243d71 100644 --- a/trunk/include/asm-mips/mach-au1x00/au1000.h +++ b/trunk/include/asm-mips/mach-au1x00/au1000.h @@ -1680,11 +1680,10 @@ enum soc_au1200_ints { #define Au1500_PCI_MEM_START 0x440000000ULL #define Au1500_PCI_MEM_END 0x44FFFFFFFULL -#define PCI_IO_START 0x00001000 -#define PCI_IO_END 0x000FFFFF -#define PCI_MEM_START 0x40000000 -#define PCI_MEM_END 0x4FFFFFFF - +#define PCI_IO_START (Au1500_PCI_IO_START + 0x1000) +#define PCI_IO_END (Au1500_PCI_IO_END) +#define PCI_MEM_START (Au1500_PCI_MEM_START) +#define PCI_MEM_END (Au1500_PCI_MEM_END) #define PCI_FIRST_DEVFN (0<<3) #define PCI_LAST_DEVFN (19<<3) diff --git a/trunk/include/asm-powerpc/commproc.h b/trunk/include/asm-powerpc/commproc.h index 2ee59d7b335c..a2328b8addd8 100644 --- a/trunk/include/asm-powerpc/commproc.h +++ b/trunk/include/asm-powerpc/commproc.h @@ -698,6 +698,9 @@ typedef struct risc_timer_pram { #define CICR_IEN ((uint)0x00000080) /* Int. enable */ #define CICR_SPS ((uint)0x00000001) /* SCC Spread */ +extern void cpm_install_handler(int vec, void (*handler)(void *), void *dev_id); +extern void cpm_free_handler(int vec); + #define IMAP_ADDR (get_immrbase()) #define CPM_PIN_INPUT 0 diff --git a/trunk/include/asm-s390/pgtable.h b/trunk/include/asm-s390/pgtable.h index 1f530f8a6280..f2cc25b74adf 100644 --- a/trunk/include/asm-s390/pgtable.h +++ b/trunk/include/asm-s390/pgtable.h @@ -453,12 +453,12 @@ static inline int pgd_bad(pgd_t pgd) { return 0; } static inline int pud_present(pud_t pud) { - return (pud_val(pud) & _REGION_ENTRY_ORIGIN) != 0UL; + return pud_val(pud) & _REGION_ENTRY_ORIGIN; } static inline int pud_none(pud_t pud) { - return (pud_val(pud) & _REGION_ENTRY_INV) != 0UL; + return pud_val(pud) & _REGION_ENTRY_INV; } static inline int pud_bad(pud_t pud) @@ -471,12 +471,12 @@ static inline int pud_bad(pud_t pud) static inline int pmd_present(pmd_t pmd) { - return (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN) != 0UL; + return pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN; } static inline int pmd_none(pmd_t pmd) { - return (pmd_val(pmd) & _SEGMENT_ENTRY_INV) != 0UL; + return pmd_val(pmd) & _SEGMENT_ENTRY_INV; } static inline int pmd_bad(pmd_t pmd) diff --git a/trunk/include/asm-sparc/unistd.h b/trunk/include/asm-sparc/unistd.h index 0decdf763716..029b3e0d5e4c 100644 --- a/trunk/include/asm-sparc/unistd.h +++ b/trunk/include/asm-sparc/unistd.h @@ -333,15 +333,6 @@ #define NR_SYSCALLS 315 -/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, - * it never had the plain ones and there is no value to adding those - * old versions into the syscall table. - */ -#define __IGNORE_setresuid -#define __IGNORE_getresuid -#define __IGNORE_setresgid -#define __IGNORE_getresgid - #ifdef __KERNEL__ #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_OLD_READDIR diff --git a/trunk/include/asm-sparc64/hypervisor.h b/trunk/include/asm-sparc64/hypervisor.h index 3ad45dff52f8..524d49835dfd 100644 --- a/trunk/include/asm-sparc64/hypervisor.h +++ b/trunk/include/asm-sparc64/hypervisor.h @@ -709,10 +709,6 @@ extern unsigned long sun4v_mmu_tsb_ctx0(unsigned long num_descriptions, */ #define HV_FAST_MMU_DEMAP_ALL 0x24 -#ifndef __ASSEMBLY__ -extern void sun4v_mmu_demap_all(void); -#endif - /* mmu_map_perm_addr() * TRAP: HV_FAST_TRAP * FUNCTION: HV_FAST_MMU_MAP_PERM_ADDR diff --git a/trunk/include/linux/netfilter_bridge.h b/trunk/include/linux/netfilter_bridge.h index 499aa9375901..533ee351a273 100644 --- a/trunk/include/linux/netfilter_bridge.h +++ b/trunk/include/linux/netfilter_bridge.h @@ -50,8 +50,7 @@ enum nf_br_hook_priorities { extern int nf_bridge_copy_header(struct sk_buff *skb); static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb) { - if (skb->nf_bridge && - skb->nf_bridge->mask & (BRNF_BRIDGED | BRNF_BRIDGED_DNAT)) + if (skb->nf_bridge) return nf_bridge_copy_header(skb); return 0; } diff --git a/trunk/net/ax25/ax25_subr.c b/trunk/net/ax25/ax25_subr.c index d8f215733175..5fe9b2a6697d 100644 --- a/trunk/net/ax25/ax25_subr.c +++ b/trunk/net/ax25/ax25_subr.c @@ -279,7 +279,6 @@ void ax25_disconnect(ax25_cb *ax25, int reason) ax25_link_failed(ax25, reason); if (ax25->sk != NULL) { - local_bh_disable(); bh_lock_sock(ax25->sk); ax25->sk->sk_state = TCP_CLOSE; ax25->sk->sk_err = reason; @@ -289,6 +288,5 @@ void ax25_disconnect(ax25_cb *ax25, int reason) sock_set_flag(ax25->sk, SOCK_DEAD); } bh_unlock_sock(ax25->sk); - local_bh_enable(); } } diff --git a/trunk/net/bridge/br_device.c b/trunk/net/bridge/br_device.c index bf7787395fe0..c07bac5e3e10 100644 --- a/trunk/net/bridge/br_device.c +++ b/trunk/net/bridge/br_device.c @@ -157,7 +157,8 @@ static struct ethtool_ops br_ethtool_ops = { void br_dev_setup(struct net_device *dev) { - random_ether_addr(dev->dev_addr); + memset(dev->dev_addr, 0, ETH_ALEN); + ether_setup(dev); dev->do_ioctl = br_dev_ioctl; diff --git a/trunk/net/ipv4/ipconfig.c b/trunk/net/ipv4/ipconfig.c index 96400b0bd08a..c5c107a01823 100644 --- a/trunk/net/ipv4/ipconfig.c +++ b/trunk/net/ipv4/ipconfig.c @@ -1396,7 +1396,25 @@ late_initcall(ip_auto_config); /* * Decode any IP configuration options in the "ip=" or "nfsaddrs=" kernel - * command line parameter. See Documentation/nfsroot.txt. + * command line parameter. It consists of option fields separated by colons in + * the following order: + * + * :::::: + * + * Any of the fields can be empty which means to use a default value: + * - address given by BOOTP or RARP + * - address of host returning BOOTP or RARP packet + * - none, or the address returned by BOOTP + * - automatically determined from , or the + * one returned by BOOTP + * - in ASCII notation, or the name returned + * by BOOTP + * - use all available devices + * : + * off|none - don't do autoconfig at all (DEFAULT) + * on|any - use any configured protocol + * dhcp|bootp|rarp - use only the specified protocol + * both - use both BOOTP and RARP (not DHCP) */ static int __init ic_proto_name(char *name) { diff --git a/trunk/net/ipv4/netfilter/ip_tables.c b/trunk/net/ipv4/netfilter/ip_tables.c index b9b189c26208..4b10b98640ac 100644 --- a/trunk/net/ipv4/netfilter/ip_tables.c +++ b/trunk/net/ipv4/netfilter/ip_tables.c @@ -1492,10 +1492,8 @@ static inline int compat_copy_match_to_user(struct ipt_entry_match *m, return xt_compat_match_to_user(m, dstptr, size); } -static int -compat_copy_entry_to_user(struct ipt_entry *e, void __user **dstptr, - compat_uint_t *size, struct xt_counters *counters, - unsigned int *i) +static int compat_copy_entry_to_user(struct ipt_entry *e, + void __user **dstptr, compat_uint_t *size) { struct ipt_entry_target *t; struct compat_ipt_entry __user *ce; @@ -1509,9 +1507,6 @@ compat_copy_entry_to_user(struct ipt_entry *e, void __user **dstptr, if (copy_to_user(ce, e, sizeof(struct ipt_entry))) goto out; - if (copy_to_user(&ce->counters, &counters[*i], sizeof(counters[*i]))) - goto out; - *dstptr += sizeof(struct compat_ipt_entry); ret = IPT_MATCH_ITERATE(e, compat_copy_match_to_user, dstptr, size); target_offset = e->target_offset - (origsize - *size); @@ -1527,8 +1522,6 @@ compat_copy_entry_to_user(struct ipt_entry *e, void __user **dstptr, goto out; if (put_user(next_offset, &ce->next_offset)) goto out; - - (*i)++; return 0; out: return ret; @@ -1944,13 +1937,14 @@ struct compat_ipt_get_entries static int compat_copy_entries_to_user(unsigned int total_size, struct xt_table *table, void __user *userptr) { + unsigned int off, num; + struct compat_ipt_entry e; struct xt_counters *counters; struct xt_table_info *private = table->private; void __user *pos; unsigned int size; int ret = 0; void *loc_cpu_entry; - unsigned int i = 0; counters = alloc_counters(table); if (IS_ERR(counters)) @@ -1964,9 +1958,48 @@ static int compat_copy_entries_to_user(unsigned int total_size, pos = userptr; size = total_size; ret = IPT_ENTRY_ITERATE(loc_cpu_entry, total_size, - compat_copy_entry_to_user, - &pos, &size, counters, &i); + compat_copy_entry_to_user, &pos, &size); + if (ret) + goto free_counters; + + /* ... then go back and fix counters and names */ + for (off = 0, num = 0; off < size; off += e.next_offset, num++) { + unsigned int i; + struct ipt_entry_match m; + struct ipt_entry_target t; + ret = -EFAULT; + if (copy_from_user(&e, userptr + off, + sizeof(struct compat_ipt_entry))) + goto free_counters; + if (copy_to_user(userptr + off + + offsetof(struct compat_ipt_entry, counters), + &counters[num], sizeof(counters[num]))) + goto free_counters; + + for (i = sizeof(struct compat_ipt_entry); + i < e.target_offset; i += m.u.match_size) { + if (copy_from_user(&m, userptr + off + i, + sizeof(struct ipt_entry_match))) + goto free_counters; + if (copy_to_user(userptr + off + i + + offsetof(struct ipt_entry_match, u.user.name), + m.u.kernel.match->name, + strlen(m.u.kernel.match->name) + 1)) + goto free_counters; + } + + if (copy_from_user(&t, userptr + off + e.target_offset, + sizeof(struct ipt_entry_target))) + goto free_counters; + if (copy_to_user(userptr + off + e.target_offset + + offsetof(struct ipt_entry_target, u.user.name), + t.u.kernel.target->name, + strlen(t.u.kernel.target->name) + 1)) + goto free_counters; + } + ret = 0; +free_counters: vfree(counters); return ret; } diff --git a/trunk/net/ipv4/tcp_input.c b/trunk/net/ipv4/tcp_input.c index 889c89362bfc..b9e429d2d1de 100644 --- a/trunk/net/ipv4/tcp_input.c +++ b/trunk/net/ipv4/tcp_input.c @@ -923,7 +923,7 @@ static void tcp_init_metrics(struct sock *sk) } if (dst_metric(dst, RTAX_RTTVAR) > tp->mdev) { tp->mdev = dst_metric(dst, RTAX_RTTVAR); - tp->mdev_max = tp->rttvar = max(tp->mdev, tcp_rto_min(sk)); + tp->mdev_max = tp->rttvar = max(tp->mdev, TCP_RTO_MIN); } tcp_set_rto(sk); tcp_bound_rto(sk); diff --git a/trunk/net/ipv6/ipv6_sockglue.c b/trunk/net/ipv6/ipv6_sockglue.c index 8c5f80fd03ad..1334fc174bcf 100644 --- a/trunk/net/ipv6/ipv6_sockglue.c +++ b/trunk/net/ipv6/ipv6_sockglue.c @@ -1046,7 +1046,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, break; default: - return -ENOPROTOOPT; + return -EINVAL; } len = min_t(unsigned int, sizeof(int), len); if(put_user(len, optlen)) @@ -1069,8 +1069,9 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname, err = do_ipv6_getsockopt(sk, level, optname, optval, optlen); #ifdef CONFIG_NETFILTER - /* we need to exclude all possible ENOPROTOOPTs except default case */ - if (err == -ENOPROTOOPT && optname != IPV6_2292PKTOPTIONS) { + /* we need to exclude all possible EINVALs except default case */ + if (err == -EINVAL && optname != IPV6_ADDRFORM && + optname != MCAST_MSFILTER) { int len; if (get_user(len, optlen)) @@ -1107,8 +1108,9 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, err = do_ipv6_getsockopt(sk, level, optname, optval, optlen); #ifdef CONFIG_NETFILTER - /* we need to exclude all possible ENOPROTOOPTs except default case */ - if (err == -ENOPROTOOPT && optname != IPV6_2292PKTOPTIONS) { + /* we need to exclude all possible EINVALs except default case */ + if (err == -EINVAL && optname != IPV6_ADDRFORM && + optname != MCAST_MSFILTER) { int len; if (get_user(len, optlen)) diff --git a/trunk/net/irda/irlmp.c b/trunk/net/irda/irlmp.c index f24cb755908e..cedff8068fbc 100644 --- a/trunk/net/irda/irlmp.c +++ b/trunk/net/irda/irlmp.c @@ -353,7 +353,6 @@ void irlmp_unregister_link(__u32 saddr) /* Final cleanup */ del_timer(&link->idle_timer); link->magic = 0; - hashbin_delete(link->lsaps, (FREE_FUNC) __irlmp_close_lsap); kfree(link); } } diff --git a/trunk/net/irda/parameters.c b/trunk/net/irda/parameters.c index 7183e9ef7996..2627dad7cd87 100644 --- a/trunk/net/irda/parameters.c +++ b/trunk/net/irda/parameters.c @@ -463,7 +463,7 @@ int irda_param_insert(void *self, __u8 pi, __u8 *buf, int len, int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != NULL, return ret;); + IRDA_ASSERT(info != 0, return ret;); pi_minor = pi & info->pi_mask; pi_major = pi >> info->pi_major_offset; @@ -517,7 +517,7 @@ static int irda_param_extract(void *self, __u8 *buf, int len, int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != NULL, return ret;); + IRDA_ASSERT(info != 0, return ret;); pi_minor = buf[n] & info->pi_mask; pi_major = buf[n] >> info->pi_major_offset; @@ -570,7 +570,7 @@ int irda_param_extract_all(void *self, __u8 *buf, int len, int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != NULL, return ret;); + IRDA_ASSERT(info != 0, return ret;); /* * Parse all parameters. Each parameter must be at least two bytes diff --git a/trunk/net/netfilter/nf_conntrack_netlink.c b/trunk/net/netfilter/nf_conntrack_netlink.c index 7d231243754a..9be1826e6cdd 100644 --- a/trunk/net/netfilter/nf_conntrack_netlink.c +++ b/trunk/net/netfilter/nf_conntrack_netlink.c @@ -1024,10 +1024,8 @@ ctnetlink_create_conntrack(struct nlattr *cda[], } /* setup master conntrack: this is a confirmed expectation */ - if (master_ct) { - __set_bit(IPS_EXPECTED_BIT, &ct->status); + if (master_ct) ct->master = master_ct; - } add_timer(&ct->timeout); nf_conntrack_hash_insert(ct); diff --git a/trunk/net/netfilter/x_tables.c b/trunk/net/netfilter/x_tables.c index b6160e41eb1c..d9a3bded0d00 100644 --- a/trunk/net/netfilter/x_tables.c +++ b/trunk/net/netfilter/x_tables.c @@ -377,9 +377,7 @@ int xt_compat_match_to_user(struct xt_entry_match *m, void __user **dstptr, u_int16_t msize = m->u.user.match_size - off; if (copy_to_user(cm, m, sizeof(*cm)) || - put_user(msize, &cm->u.user.match_size) || - copy_to_user(cm->u.user.name, m->u.kernel.match->name, - strlen(m->u.kernel.match->name) + 1)) + put_user(msize, &cm->u.user.match_size)) return -EFAULT; if (match->compat_to_user) { @@ -470,9 +468,7 @@ int xt_compat_target_to_user(struct xt_entry_target *t, void __user **dstptr, u_int16_t tsize = t->u.user.target_size - off; if (copy_to_user(ct, t, sizeof(*ct)) || - put_user(tsize, &ct->u.user.target_size) || - copy_to_user(ct->u.user.name, t->u.kernel.target->name, - strlen(t->u.kernel.target->name) + 1)) + put_user(tsize, &ct->u.user.target_size)) return -EFAULT; if (target->compat_to_user) { diff --git a/trunk/net/netfilter/xt_hashlimit.c b/trunk/net/netfilter/xt_hashlimit.c index 2ef44d8560c1..19103678bf20 100644 --- a/trunk/net/netfilter/xt_hashlimit.c +++ b/trunk/net/netfilter/xt_hashlimit.c @@ -240,7 +240,7 @@ static bool select_all(const struct xt_hashlimit_htable *ht, static bool select_gc(const struct xt_hashlimit_htable *ht, const struct dsthash_ent *he) { - return time_after_eq(jiffies, he->expires); + return jiffies >= he->expires; } static void htable_selective_cleanup(struct xt_hashlimit_htable *ht, diff --git a/trunk/net/sctp/ulpqueue.c b/trunk/net/sctp/ulpqueue.c index 1733fa29a501..4908041ffb31 100644 --- a/trunk/net/sctp/ulpqueue.c +++ b/trunk/net/sctp/ulpqueue.c @@ -53,7 +53,6 @@ static struct sctp_ulpevent * sctp_ulpq_reasm(struct sctp_ulpq *ulpq, struct sctp_ulpevent *); static struct sctp_ulpevent * sctp_ulpq_order(struct sctp_ulpq *, struct sctp_ulpevent *); -static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq); /* 1st Level Abstractions */ @@ -191,7 +190,6 @@ static void sctp_ulpq_set_pd(struct sctp_ulpq *ulpq) static int sctp_ulpq_clear_pd(struct sctp_ulpq *ulpq) { ulpq->pd_mode = 0; - sctp_ulpq_reasm_drain(ulpq); return sctp_clear_pd(ulpq->asoc->base.sk, ulpq->asoc); } @@ -701,37 +699,6 @@ void sctp_ulpq_reasm_flushtsn(struct sctp_ulpq *ulpq, __u32 fwd_tsn) } } -/* - * Drain the reassembly queue. If we just cleared parted delivery, it - * is possible that the reassembly queue will contain already reassembled - * messages. Retrieve any such messages and give them to the user. - */ -static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq) -{ - struct sctp_ulpevent *event = NULL; - struct sk_buff_head temp; - - if (skb_queue_empty(&ulpq->reasm)) - return; - - while ((event = sctp_ulpq_retrieve_reassembled(ulpq)) != NULL) { - /* Do ordering if needed. */ - if ((event) && (event->msg_flags & MSG_EOR)){ - skb_queue_head_init(&temp); - __skb_queue_tail(&temp, sctp_event2skb(event)); - - event = sctp_ulpq_order(ulpq, event); - } - - /* Send event to the ULP. 'event' is the - * sctp_ulpevent for very first SKB on the temp' list. - */ - if (event) - sctp_ulpq_tail_event(ulpq, event); - } -} - - /* Helper function to gather skbs that have possibly become * ordered by an an incoming chunk. */ diff --git a/trunk/net/tipc/socket.c b/trunk/net/tipc/socket.c index 24ddfd2ca38b..6b792265dc06 100644 --- a/trunk/net/tipc/socket.c +++ b/trunk/net/tipc/socket.c @@ -253,7 +253,7 @@ static int release(struct socket *sock) dbg("sock_delete: %x\n",tsock); if (!tsock) return 0; - down(&tsock->sem); + down_interruptible(&tsock->sem); if (!sock->sk) { up(&tsock->sem); return 0; diff --git a/trunk/net/xfrm/xfrm_state.c b/trunk/net/xfrm/xfrm_state.c index 1af522bf12ca..cf43c49eab37 100644 --- a/trunk/net/xfrm/xfrm_state.c +++ b/trunk/net/xfrm/xfrm_state.c @@ -2028,7 +2028,6 @@ void xfrm_audit_state_add(struct xfrm_state *x, int result, u32 auid, u32 sid) { struct audit_buffer *audit_buf; - u32 spi; extern int audit_enabled; if (audit_enabled == 0) @@ -2038,8 +2037,8 @@ xfrm_audit_state_add(struct xfrm_state *x, int result, u32 auid, u32 sid) return; audit_log_format(audit_buf, " op=SAD-add res=%u",result); xfrm_audit_common_stateinfo(x, audit_buf); - spi = ntohl(x->id.spi); - audit_log_format(audit_buf, " spi=%u(0x%x)", spi, spi); + audit_log_format(audit_buf, " spi=%lu(0x%lx)", + (unsigned long)x->id.spi, (unsigned long)x->id.spi); audit_log_end(audit_buf); } EXPORT_SYMBOL_GPL(xfrm_audit_state_add); @@ -2048,7 +2047,6 @@ void xfrm_audit_state_delete(struct xfrm_state *x, int result, u32 auid, u32 sid) { struct audit_buffer *audit_buf; - u32 spi; extern int audit_enabled; if (audit_enabled == 0) @@ -2058,8 +2056,8 @@ xfrm_audit_state_delete(struct xfrm_state *x, int result, u32 auid, u32 sid) return; audit_log_format(audit_buf, " op=SAD-delete res=%u",result); xfrm_audit_common_stateinfo(x, audit_buf); - spi = ntohl(x->id.spi); - audit_log_format(audit_buf, " spi=%u(0x%x)", spi, spi); + audit_log_format(audit_buf, " spi=%lu(0x%lx)", + (unsigned long)x->id.spi, (unsigned long)x->id.spi); audit_log_end(audit_buf); } EXPORT_SYMBOL_GPL(xfrm_audit_state_delete); diff --git a/trunk/sound/arm/pxa2xx-ac97.c b/trunk/sound/arm/pxa2xx-ac97.c index 55c6c822bec1..7bc2767e1584 100644 --- a/trunk/sound/arm/pxa2xx-ac97.c +++ b/trunk/sound/arm/pxa2xx-ac97.c @@ -113,9 +113,9 @@ static void pxa2xx_ac97_reset(struct snd_ac97 *ac97) gsr_bits = 0; #ifdef CONFIG_PXA27x /* PXA27x Developers Manual section 13.5.2.2.1 */ - pxa_set_cken(CKEN_AC97CONF, 1); + pxa_set_cken(1 << 31, 1); udelay(5); - pxa_set_cken(CKEN_AC97CONF, 0); + pxa_set_cken(1 << 31, 0); GCR = GCR_COLD_RST; udelay(50); #else diff --git a/trunk/sound/soc/pxa/pxa2xx-ac97.c b/trunk/sound/soc/pxa/pxa2xx-ac97.c index 60e6f4677f93..dd14abcdf1bd 100644 --- a/trunk/sound/soc/pxa/pxa2xx-ac97.c +++ b/trunk/sound/soc/pxa/pxa2xx-ac97.c @@ -160,9 +160,9 @@ static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97) gsr_bits = 0; #ifdef CONFIG_PXA27x /* PXA27x Developers Manual section 13.5.2.2.1 */ - pxa_set_cken(CKEN_AC97CONF, 1); + pxa_set_cken(31, 1); udelay(5); - pxa_set_cken(CKEN_AC97CONF, 0); + pxa_set_cken(31, 0); GCR = GCR_COLD_RST; udelay(50); #else