diff options
29 files changed, 128 insertions, 74 deletions
diff --git a/Documentation/networking/wavelan.txt b/Documentation/networking/wavelan.txt index c1acf5eb3712..afa6e521c685 100644 --- a/Documentation/networking/wavelan.txt +++ b/Documentation/networking/wavelan.txt | |||
| @@ -12,8 +12,8 @@ and many Linux driver to support it. | |||
| 12 | "wavelan" driver (old ISA Wavelan) | 12 | "wavelan" driver (old ISA Wavelan) |
| 13 | ---------------- | 13 | ---------------- |
| 14 | o Config : Network device -> Wireless LAN -> AT&T WaveLAN | 14 | o Config : Network device -> Wireless LAN -> AT&T WaveLAN |
| 15 | o Location : .../drivers/net/wavelan* | 15 | o Location : .../drivers/net/wireless/wavelan* |
| 16 | o in-line doc : .../drivers/net/wavelan.p.h | 16 | o in-line doc : .../drivers/net/wireless/wavelan.p.h |
| 17 | o on-line doc : | 17 | o on-line doc : |
| 18 | http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wavelan.html | 18 | http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wavelan.html |
| 19 | 19 | ||
diff --git a/arch/powerpc/boot/flatdevtree_env.h b/arch/powerpc/boot/flatdevtree_env.h index ad0420da8921..66e0ebb1a364 100644 --- a/arch/powerpc/boot/flatdevtree_env.h +++ b/arch/powerpc/boot/flatdevtree_env.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * This file adds the header file glue so that the shared files | 2 | * This file adds the header file glue so that the shared files |
| 3 | * flatdevicetree.[ch] can compile and work in the powerpc bootwrapper. | 3 | * flatdevicetree.[ch] can compile and work in the powerpc bootwrapper. |
| 4 | * | 4 | * |
| 5 | * strncmp & strchr copied from <file:lib/strings.c> | 5 | * strncmp & strchr copied from <file:lib/string.c> |
| 6 | * Copyright (C) 1991, 1992 Linus Torvalds | 6 | * Copyright (C) 1991, 1992 Linus Torvalds |
| 7 | * | 7 | * |
| 8 | * Maintained by: Mark A. Greer <mgreer@mvista.com> | 8 | * Maintained by: Mark A. Greer <mgreer@mvista.com> |
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c index c3a565bba106..a6b1490e00c4 100644 --- a/arch/x86/kernel/io_apic_32.c +++ b/arch/x86/kernel/io_apic_32.c | |||
| @@ -2169,14 +2169,10 @@ static inline void __init check_timer(void) | |||
| 2169 | { | 2169 | { |
| 2170 | int apic1, pin1, apic2, pin2; | 2170 | int apic1, pin1, apic2, pin2; |
| 2171 | int vector; | 2171 | int vector; |
| 2172 | unsigned int ver; | ||
| 2173 | unsigned long flags; | 2172 | unsigned long flags; |
| 2174 | 2173 | ||
| 2175 | local_irq_save(flags); | 2174 | local_irq_save(flags); |
| 2176 | 2175 | ||
| 2177 | ver = apic_read(APIC_LVR); | ||
| 2178 | ver = GET_APIC_VERSION(ver); | ||
| 2179 | |||
| 2180 | /* | 2176 | /* |
| 2181 | * get/set the timer IRQ vector: | 2177 | * get/set the timer IRQ vector: |
| 2182 | */ | 2178 | */ |
| @@ -2189,15 +2185,11 @@ static inline void __init check_timer(void) | |||
| 2189 | * mode for the 8259A whenever interrupts are routed | 2185 | * mode for the 8259A whenever interrupts are routed |
| 2190 | * through I/O APICs. Also IRQ0 has to be enabled in | 2186 | * through I/O APICs. Also IRQ0 has to be enabled in |
| 2191 | * the 8259A which implies the virtual wire has to be | 2187 | * the 8259A which implies the virtual wire has to be |
| 2192 | * disabled in the local APIC. Finally timer interrupts | 2188 | * disabled in the local APIC. |
| 2193 | * need to be acknowledged manually in the 8259A for | ||
| 2194 | * timer_interrupt() and for the i82489DX when using | ||
| 2195 | * the NMI watchdog. | ||
| 2196 | */ | 2189 | */ |
| 2197 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); | 2190 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); |
| 2198 | init_8259A(1); | 2191 | init_8259A(1); |
| 2199 | timer_ack = !cpu_has_tsc; | 2192 | timer_ack = 1; |
| 2200 | timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver)); | ||
| 2201 | if (timer_over_8254 > 0) | 2193 | if (timer_over_8254 > 0) |
| 2202 | enable_8259A_irq(0); | 2194 | enable_8259A_irq(0); |
| 2203 | 2195 | ||
diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c index 0ab680f2d9db..3960ab7e1497 100644 --- a/arch/x86/kernel/mfgpt_32.c +++ b/arch/x86/kernel/mfgpt_32.c | |||
| @@ -278,12 +278,12 @@ static int mfgpt_next_event(unsigned long delta, struct clock_event_device *evt) | |||
| 278 | 278 | ||
| 279 | static irqreturn_t mfgpt_tick(int irq, void *dev_id) | 279 | static irqreturn_t mfgpt_tick(int irq, void *dev_id) |
| 280 | { | 280 | { |
| 281 | /* Turn off the clock (and clear the event) */ | ||
| 282 | mfgpt_disable_timer(mfgpt_event_clock); | ||
| 283 | |||
| 281 | if (mfgpt_tick_mode == CLOCK_EVT_MODE_SHUTDOWN) | 284 | if (mfgpt_tick_mode == CLOCK_EVT_MODE_SHUTDOWN) |
| 282 | return IRQ_HANDLED; | 285 | return IRQ_HANDLED; |
| 283 | 286 | ||
| 284 | /* Turn off the clock */ | ||
| 285 | mfgpt_disable_timer(mfgpt_event_clock); | ||
| 286 | |||
| 287 | /* Clear the counter */ | 287 | /* Clear the counter */ |
| 288 | geode_mfgpt_write(mfgpt_event_clock, MFGPT_REG_COUNTER, 0); | 288 | geode_mfgpt_write(mfgpt_event_clock, MFGPT_REG_COUNTER, 0); |
| 289 | 289 | ||
| @@ -319,10 +319,6 @@ static int __init mfgpt_timer_setup(void) | |||
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | mfgpt_event_clock = timer; | 321 | mfgpt_event_clock = timer; |
| 322 | /* Set the clock scale and enable the event mode for CMP2 */ | ||
| 323 | val = MFGPT_SCALE | (3 << 8); | ||
| 324 | |||
| 325 | geode_mfgpt_write(mfgpt_event_clock, MFGPT_REG_SETUP, val); | ||
| 326 | 322 | ||
| 327 | /* Set up the IRQ on the MFGPT side */ | 323 | /* Set up the IRQ on the MFGPT side */ |
| 328 | if (geode_mfgpt_setup_irq(mfgpt_event_clock, MFGPT_CMP2, irq)) { | 324 | if (geode_mfgpt_setup_irq(mfgpt_event_clock, MFGPT_CMP2, irq)) { |
| @@ -339,6 +335,11 @@ static int __init mfgpt_timer_setup(void) | |||
| 339 | goto err; | 335 | goto err; |
| 340 | } | 336 | } |
| 341 | 337 | ||
| 338 | /* Set the clock scale and enable the event mode for CMP2 */ | ||
| 339 | val = MFGPT_SCALE | (3 << 8); | ||
| 340 | |||
| 341 | geode_mfgpt_write(mfgpt_event_clock, MFGPT_REG_SETUP, val); | ||
| 342 | |||
| 342 | /* Set up the clock event */ | 343 | /* Set up the clock event */ |
| 343 | mfgpt_clockevent.mult = div_sc(MFGPT_HZ, NSEC_PER_SEC, 32); | 344 | mfgpt_clockevent.mult = div_sc(MFGPT_HZ, NSEC_PER_SEC, 32); |
| 344 | mfgpt_clockevent.min_delta_ns = clockevent_delta2ns(0xF, | 345 | mfgpt_clockevent.min_delta_ns = clockevent_delta2ns(0xF, |
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c index 80ca72e5ac29..852db2906921 100644 --- a/arch/x86/kernel/nmi_32.c +++ b/arch/x86/kernel/nmi_32.c | |||
| @@ -25,7 +25,6 @@ | |||
| 25 | 25 | ||
| 26 | #include <asm/smp.h> | 26 | #include <asm/smp.h> |
| 27 | #include <asm/nmi.h> | 27 | #include <asm/nmi.h> |
| 28 | #include <asm/timer.h> | ||
| 29 | 28 | ||
| 30 | #include "mach_traps.h" | 29 | #include "mach_traps.h" |
| 31 | 30 | ||
| @@ -84,7 +83,7 @@ static int __init check_nmi_watchdog(void) | |||
| 84 | 83 | ||
| 85 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); | 84 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); |
| 86 | if (!prev_nmi_count) | 85 | if (!prev_nmi_count) |
| 87 | goto error; | 86 | return -1; |
| 88 | 87 | ||
| 89 | printk(KERN_INFO "Testing NMI watchdog ... "); | 88 | printk(KERN_INFO "Testing NMI watchdog ... "); |
| 90 | 89 | ||
| @@ -119,7 +118,7 @@ static int __init check_nmi_watchdog(void) | |||
| 119 | if (!atomic_read(&nmi_active)) { | 118 | if (!atomic_read(&nmi_active)) { |
| 120 | kfree(prev_nmi_count); | 119 | kfree(prev_nmi_count); |
| 121 | atomic_set(&nmi_active, -1); | 120 | atomic_set(&nmi_active, -1); |
| 122 | goto error; | 121 | return -1; |
| 123 | } | 122 | } |
| 124 | printk("OK.\n"); | 123 | printk("OK.\n"); |
| 125 | 124 | ||
| @@ -130,10 +129,6 @@ static int __init check_nmi_watchdog(void) | |||
| 130 | 129 | ||
| 131 | kfree(prev_nmi_count); | 130 | kfree(prev_nmi_count); |
| 132 | return 0; | 131 | return 0; |
| 133 | error: | ||
| 134 | timer_ack = !cpu_has_tsc; | ||
| 135 | |||
| 136 | return -1; | ||
| 137 | } | 132 | } |
| 138 | /* This needs to happen later in boot so counters are working */ | 133 | /* This needs to happen later in boot so counters are working */ |
| 139 | late_initcall(check_nmi_watchdog); | 134 | late_initcall(check_nmi_watchdog); |
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index b6af3ea43c73..79ad15252150 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
| @@ -95,7 +95,7 @@ struct shared_info *HYPERVISOR_shared_info = (void *)&dummy_shared_info; | |||
| 95 | * | 95 | * |
| 96 | * 0: not available, 1: available | 96 | * 0: not available, 1: available |
| 97 | */ | 97 | */ |
| 98 | static int have_vcpu_info_placement = 1; | 98 | static int have_vcpu_info_placement = 0; |
| 99 | 99 | ||
| 100 | static void __init xen_vcpu_setup(int cpu) | 100 | static void __init xen_vcpu_setup(int cpu) |
| 101 | { | 101 | { |
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index ef1ed5d70125..2e3a0d4bc4c2 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig | |||
| @@ -137,7 +137,7 @@ config CYCLADES | |||
| 137 | your Linux box, for instance in order to become a dial-in server. | 137 | your Linux box, for instance in order to become a dial-in server. |
| 138 | 138 | ||
| 139 | For information about the Cyclades-Z card, read | 139 | For information about the Cyclades-Z card, read |
| 140 | <file:drivers/char/README.cycladesZ>. | 140 | <file:Documentation/README.cycladesZ>. |
| 141 | 141 | ||
| 142 | To compile this driver as a module, choose M here: the | 142 | To compile this driver as a module, choose M here: the |
| 143 | module will be called cyclades. | 143 | module will be called cyclades. |
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index d87961993ccf..03eac1eb8e0f 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -10,6 +10,8 @@ | |||
| 10 | #include <linux/agp_backend.h> | 10 | #include <linux/agp_backend.h> |
| 11 | #include "agp.h" | 11 | #include "agp.h" |
| 12 | 12 | ||
| 13 | #define PCI_DEVICE_ID_INTEL_E7221_HB 0x2588 | ||
| 14 | #define PCI_DEVICE_ID_INTEL_E7221_IG 0x258a | ||
| 13 | #define PCI_DEVICE_ID_INTEL_82946GZ_HB 0x2970 | 15 | #define PCI_DEVICE_ID_INTEL_82946GZ_HB 0x2970 |
| 14 | #define PCI_DEVICE_ID_INTEL_82946GZ_IG 0x2972 | 16 | #define PCI_DEVICE_ID_INTEL_82946GZ_IG 0x2972 |
| 15 | #define PCI_DEVICE_ID_INTEL_82965G_1_HB 0x2980 | 17 | #define PCI_DEVICE_ID_INTEL_82965G_1_HB 0x2980 |
| @@ -526,7 +528,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 526 | break; | 528 | break; |
| 527 | case I915_GMCH_GMS_STOLEN_48M: | 529 | case I915_GMCH_GMS_STOLEN_48M: |
| 528 | /* Check it's really I915G */ | 530 | /* Check it's really I915G */ |
| 529 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | 531 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || |
| 532 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | ||
| 530 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || | 533 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || |
| 531 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB || | 534 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB || |
| 532 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945GM_HB || | 535 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945GM_HB || |
| @@ -538,7 +541,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 538 | break; | 541 | break; |
| 539 | case I915_GMCH_GMS_STOLEN_64M: | 542 | case I915_GMCH_GMS_STOLEN_64M: |
| 540 | /* Check it's really I915G */ | 543 | /* Check it's really I915G */ |
| 541 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | 544 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || |
| 545 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | ||
| 542 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || | 546 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || |
| 543 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB || | 547 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB || |
| 544 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945GM_HB || | 548 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945GM_HB || |
| @@ -1854,6 +1858,8 @@ static const struct intel_driver_description { | |||
| 1854 | { PCI_DEVICE_ID_INTEL_82865_HB, PCI_DEVICE_ID_INTEL_82865_IG, 0, "865", | 1858 | { PCI_DEVICE_ID_INTEL_82865_HB, PCI_DEVICE_ID_INTEL_82865_IG, 0, "865", |
| 1855 | &intel_845_driver, &intel_830_driver }, | 1859 | &intel_845_driver, &intel_830_driver }, |
| 1856 | { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, | 1860 | { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, |
| 1861 | { PCI_DEVICE_ID_INTEL_E7221_HB, PCI_DEVICE_ID_INTEL_E7221_IG, 0, "E7221 (i915)", | ||
| 1862 | NULL, &intel_915_driver }, | ||
| 1857 | { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", | 1863 | { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", |
| 1858 | NULL, &intel_915_driver }, | 1864 | NULL, &intel_915_driver }, |
| 1859 | { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", | 1865 | { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", |
| @@ -2059,6 +2065,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
| 2059 | ID(PCI_DEVICE_ID_INTEL_82875_HB), | 2065 | ID(PCI_DEVICE_ID_INTEL_82875_HB), |
| 2060 | ID(PCI_DEVICE_ID_INTEL_7505_0), | 2066 | ID(PCI_DEVICE_ID_INTEL_7505_0), |
| 2061 | ID(PCI_DEVICE_ID_INTEL_7205_0), | 2067 | ID(PCI_DEVICE_ID_INTEL_7205_0), |
| 2068 | ID(PCI_DEVICE_ID_INTEL_E7221_HB), | ||
| 2062 | ID(PCI_DEVICE_ID_INTEL_82915G_HB), | 2069 | ID(PCI_DEVICE_ID_INTEL_82915G_HB), |
| 2063 | ID(PCI_DEVICE_ID_INTEL_82915GM_HB), | 2070 | ID(PCI_DEVICE_ID_INTEL_82915GM_HB), |
| 2064 | ID(PCI_DEVICE_ID_INTEL_82945G_HB), | 2071 | ID(PCI_DEVICE_ID_INTEL_82945G_HB), |
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h index f3593974496c..43d3c42df360 100644 --- a/drivers/char/drm/drm_pciids.h +++ b/drivers/char/drm/drm_pciids.h | |||
| @@ -297,6 +297,7 @@ | |||
| 297 | {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 297 | {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 298 | {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 298 | {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 299 | {0x8086, 0x2582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 299 | {0x8086, 0x2582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 300 | {0x8086, 0x258a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | ||
| 300 | {0x8086, 0x2592, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 301 | {0x8086, 0x2592, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 301 | {0x8086, 0x2772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 302 | {0x8086, 0x2772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 302 | {0x8086, 0x27a2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 303 | {0x8086, 0x27a2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index 6a182e14cf58..ad6c8a319903 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
| @@ -2,6 +2,14 @@ | |||
| 2 | it87.c - Part of lm_sensors, Linux kernel modules for hardware | 2 | it87.c - Part of lm_sensors, Linux kernel modules for hardware |
| 3 | monitoring. | 3 | monitoring. |
| 4 | 4 | ||
| 5 | The IT8705F is an LPC-based Super I/O part that contains UARTs, a | ||
| 6 | parallel port, an IR port, a MIDI port, a floppy controller, etc., in | ||
| 7 | addition to an Environment Controller (Enhanced Hardware Monitor and | ||
| 8 | Fan Controller) | ||
| 9 | |||
| 10 | This driver supports only the Environment Controller in the IT8705F and | ||
| 11 | similar parts. The other devices are supported by different drivers. | ||
| 12 | |||
| 5 | Supports: IT8705F Super I/O chip w/LPC interface | 13 | Supports: IT8705F Super I/O chip w/LPC interface |
| 6 | IT8712F Super I/O chip w/LPC interface | 14 | IT8712F Super I/O chip w/LPC interface |
| 7 | IT8716F Super I/O chip w/LPC interface | 15 | IT8716F Super I/O chip w/LPC interface |
| @@ -118,9 +126,15 @@ static int fix_pwm_polarity; | |||
| 118 | /* Length of ISA address segment */ | 126 | /* Length of ISA address segment */ |
| 119 | #define IT87_EXTENT 8 | 127 | #define IT87_EXTENT 8 |
| 120 | 128 | ||
| 121 | /* Where are the ISA address/data registers relative to the base address */ | 129 | /* Length of ISA address segment for Environmental Controller */ |
| 122 | #define IT87_ADDR_REG_OFFSET 5 | 130 | #define IT87_EC_EXTENT 2 |
| 123 | #define IT87_DATA_REG_OFFSET 6 | 131 | |
| 132 | /* Offset of EC registers from ISA base address */ | ||
| 133 | #define IT87_EC_OFFSET 5 | ||
| 134 | |||
| 135 | /* Where are the ISA address/data registers relative to the EC base address */ | ||
| 136 | #define IT87_ADDR_REG_OFFSET 0 | ||
| 137 | #define IT87_DATA_REG_OFFSET 1 | ||
| 124 | 138 | ||
| 125 | /*----- The IT87 registers -----*/ | 139 | /*----- The IT87 registers -----*/ |
| 126 | 140 | ||
| @@ -968,10 +982,10 @@ static int __devinit it87_probe(struct platform_device *pdev) | |||
| 968 | }; | 982 | }; |
| 969 | 983 | ||
| 970 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | 984 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); |
| 971 | if (!request_region(res->start, IT87_EXTENT, DRVNAME)) { | 985 | if (!request_region(res->start, IT87_EC_EXTENT, DRVNAME)) { |
| 972 | dev_err(dev, "Failed to request region 0x%lx-0x%lx\n", | 986 | dev_err(dev, "Failed to request region 0x%lx-0x%lx\n", |
| 973 | (unsigned long)res->start, | 987 | (unsigned long)res->start, |
| 974 | (unsigned long)(res->start + IT87_EXTENT - 1)); | 988 | (unsigned long)(res->start + IT87_EC_EXTENT - 1)); |
| 975 | err = -EBUSY; | 989 | err = -EBUSY; |
| 976 | goto ERROR0; | 990 | goto ERROR0; |
| 977 | } | 991 | } |
| @@ -1124,7 +1138,7 @@ ERROR2: | |||
| 1124 | platform_set_drvdata(pdev, NULL); | 1138 | platform_set_drvdata(pdev, NULL); |
| 1125 | kfree(data); | 1139 | kfree(data); |
| 1126 | ERROR1: | 1140 | ERROR1: |
| 1127 | release_region(res->start, IT87_EXTENT); | 1141 | release_region(res->start, IT87_EC_EXTENT); |
| 1128 | ERROR0: | 1142 | ERROR0: |
| 1129 | return err; | 1143 | return err; |
| 1130 | } | 1144 | } |
| @@ -1137,7 +1151,7 @@ static int __devexit it87_remove(struct platform_device *pdev) | |||
| 1137 | sysfs_remove_group(&pdev->dev.kobj, &it87_group); | 1151 | sysfs_remove_group(&pdev->dev.kobj, &it87_group); |
| 1138 | sysfs_remove_group(&pdev->dev.kobj, &it87_group_opt); | 1152 | sysfs_remove_group(&pdev->dev.kobj, &it87_group_opt); |
| 1139 | 1153 | ||
| 1140 | release_region(data->addr, IT87_EXTENT); | 1154 | release_region(data->addr, IT87_EC_EXTENT); |
| 1141 | platform_set_drvdata(pdev, NULL); | 1155 | platform_set_drvdata(pdev, NULL); |
| 1142 | kfree(data); | 1156 | kfree(data); |
| 1143 | 1157 | ||
| @@ -1402,8 +1416,8 @@ static int __init it87_device_add(unsigned short address, | |||
| 1402 | const struct it87_sio_data *sio_data) | 1416 | const struct it87_sio_data *sio_data) |
| 1403 | { | 1417 | { |
| 1404 | struct resource res = { | 1418 | struct resource res = { |
| 1405 | .start = address , | 1419 | .start = address + IT87_EC_OFFSET, |
| 1406 | .end = address + IT87_EXTENT - 1, | 1420 | .end = address + IT87_EC_OFFSET + IT87_EC_EXTENT - 1, |
| 1407 | .name = DRVNAME, | 1421 | .name = DRVNAME, |
| 1408 | .flags = IORESOURCE_IO, | 1422 | .flags = IORESOURCE_IO, |
| 1409 | }; | 1423 | }; |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 9ae3166e3162..9af05a2f4af3 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -2465,9 +2465,6 @@ config IXGBE | |||
| 2465 | 2465 | ||
| 2466 | <http://support.intel.com> | 2466 | <http://support.intel.com> |
| 2467 | 2467 | ||
| 2468 | More specific information on configuring the driver is in | ||
| 2469 | <file:Documentation/networking/ixgbe.txt>. | ||
| 2470 | |||
| 2471 | To compile this driver as a module, choose M here. The module | 2468 | To compile this driver as a module, choose M here. The module |
| 2472 | will be called ixgbe. | 2469 | will be called ixgbe. |
| 2473 | 2470 | ||
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c index 7eab072ae792..b570402f7fed 100644 --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c | |||
| @@ -372,7 +372,7 @@ static void __mdio_cmd(void __iomem *ioaddr, u32 ctl) | |||
| 372 | msleep(1); | 372 | msleep(1); |
| 373 | } | 373 | } |
| 374 | 374 | ||
| 375 | if (i > 999) | 375 | if (i > 99) |
| 376 | printk(KERN_ERR PFX "PHY command failed !\n"); | 376 | printk(KERN_ERR PFX "PHY command failed !\n"); |
| 377 | } | 377 | } |
| 378 | 378 | ||
| @@ -847,10 +847,8 @@ static void sis190_soft_reset(void __iomem *ioaddr) | |||
| 847 | { | 847 | { |
| 848 | SIS_W32(IntrControl, 0x8000); | 848 | SIS_W32(IntrControl, 0x8000); |
| 849 | SIS_PCI_COMMIT(); | 849 | SIS_PCI_COMMIT(); |
| 850 | msleep(1); | ||
| 851 | SIS_W32(IntrControl, 0x0); | 850 | SIS_W32(IntrControl, 0x0); |
| 852 | sis190_asic_down(ioaddr); | 851 | sis190_asic_down(ioaddr); |
| 853 | msleep(1); | ||
| 854 | } | 852 | } |
| 855 | 853 | ||
| 856 | static void sis190_hw_start(struct net_device *dev) | 854 | static void sis190_hw_start(struct net_device *dev) |
| @@ -1041,8 +1039,6 @@ static int sis190_open(struct net_device *dev) | |||
| 1041 | if (rc < 0) | 1039 | if (rc < 0) |
| 1042 | goto err_free_rx_1; | 1040 | goto err_free_rx_1; |
| 1043 | 1041 | ||
| 1044 | INIT_WORK(&tp->phy_task, sis190_phy_task); | ||
| 1045 | |||
| 1046 | sis190_request_timer(dev); | 1042 | sis190_request_timer(dev); |
| 1047 | 1043 | ||
| 1048 | rc = request_irq(dev->irq, sis190_interrupt, IRQF_SHARED, dev->name, dev); | 1044 | rc = request_irq(dev->irq, sis190_interrupt, IRQF_SHARED, dev->name, dev); |
| @@ -1549,28 +1545,31 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev, | |||
| 1549 | } | 1545 | } |
| 1550 | 1546 | ||
| 1551 | /** | 1547 | /** |
| 1552 | * sis190_get_mac_addr_from_apc - Get MAC address for SiS965 model | 1548 | * sis190_get_mac_addr_from_apc - Get MAC address for SiS96x model |
| 1553 | * @pdev: PCI device | 1549 | * @pdev: PCI device |
| 1554 | * @dev: network device to get address for | 1550 | * @dev: network device to get address for |
| 1555 | * | 1551 | * |
| 1556 | * SiS965 model, use APC CMOS RAM to store MAC address. | 1552 | * SiS96x model, use APC CMOS RAM to store MAC address. |
| 1557 | * APC CMOS RAM is accessed through ISA bridge. | 1553 | * APC CMOS RAM is accessed through ISA bridge. |
| 1558 | * MAC address is read into @net_dev->dev_addr. | 1554 | * MAC address is read into @net_dev->dev_addr. |
| 1559 | */ | 1555 | */ |
| 1560 | static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev, | 1556 | static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev, |
| 1561 | struct net_device *dev) | 1557 | struct net_device *dev) |
| 1562 | { | 1558 | { |
| 1559 | static const u16 __devinitdata ids[] = { 0x0965, 0x0966, 0x0968 }; | ||
| 1563 | struct sis190_private *tp = netdev_priv(dev); | 1560 | struct sis190_private *tp = netdev_priv(dev); |
| 1564 | struct pci_dev *isa_bridge; | 1561 | struct pci_dev *isa_bridge; |
| 1565 | u8 reg, tmp8; | 1562 | u8 reg, tmp8; |
| 1566 | int i; | 1563 | unsigned int i; |
| 1567 | 1564 | ||
| 1568 | net_probe(tp, KERN_INFO "%s: Read MAC address from APC.\n", | 1565 | net_probe(tp, KERN_INFO "%s: Read MAC address from APC.\n", |
| 1569 | pci_name(pdev)); | 1566 | pci_name(pdev)); |
| 1570 | 1567 | ||
| 1571 | isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, 0x0965, NULL); | 1568 | for (i = 0; i < ARRAY_SIZE(ids); i++) { |
| 1572 | if (!isa_bridge) | 1569 | isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, ids[i], NULL); |
| 1573 | isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, 0x0966, NULL); | 1570 | if (isa_bridge) |
| 1571 | break; | ||
| 1572 | } | ||
| 1574 | 1573 | ||
| 1575 | if (!isa_bridge) { | 1574 | if (!isa_bridge) { |
| 1576 | net_probe(tp, KERN_INFO "%s: Can not find ISA bridge.\n", | 1575 | net_probe(tp, KERN_INFO "%s: Can not find ISA bridge.\n", |
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c index b4891caeae5a..656200472fa1 100644 --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c | |||
| @@ -1909,7 +1909,7 @@ static void dmfe_parse_srom(struct dmfe_board_info * db) | |||
| 1909 | if ( ( (int) srom[18] & 0xff) == SROM_V41_CODE) { | 1909 | if ( ( (int) srom[18] & 0xff) == SROM_V41_CODE) { |
| 1910 | /* SROM V4.01 */ | 1910 | /* SROM V4.01 */ |
| 1911 | /* Get NIC support media mode */ | 1911 | /* Get NIC support media mode */ |
| 1912 | db->NIC_capability = le16_to_cpup((__le16 *)srom + 34/2); | 1912 | db->NIC_capability = le16_to_cpup((__le16 *) (srom + 34)); |
| 1913 | db->PHY_reg4 = 0; | 1913 | db->PHY_reg4 = 0; |
| 1914 | for (tmp_reg = 1; tmp_reg < 0x10; tmp_reg <<= 1) { | 1914 | for (tmp_reg = 1; tmp_reg < 0x10; tmp_reg <<= 1) { |
| 1915 | switch( db->NIC_capability & tmp_reg ) { | 1915 | switch( db->NIC_capability & tmp_reg ) { |
| @@ -1921,8 +1921,8 @@ static void dmfe_parse_srom(struct dmfe_board_info * db) | |||
| 1921 | } | 1921 | } |
| 1922 | 1922 | ||
| 1923 | /* Media Mode Force or not check */ | 1923 | /* Media Mode Force or not check */ |
| 1924 | dmfe_mode = le32_to_cpup((__le32 *)srom + 34/4) & | 1924 | dmfe_mode = (le32_to_cpup((__le32 *) (srom + 34)) & |
| 1925 | le32_to_cpup((__le32 *)srom + 36/4); | 1925 | le32_to_cpup((__le32 *) (srom + 36))); |
| 1926 | switch(dmfe_mode) { | 1926 | switch(dmfe_mode) { |
| 1927 | case 0x4: dmfe_media_mode = DMFE_100MHF; break; /* 100MHF */ | 1927 | case 0x4: dmfe_media_mode = DMFE_100MHF; break; /* 100MHF */ |
| 1928 | case 0x2: dmfe_media_mode = DMFE_10MFD; break; /* 10MFD */ | 1928 | case 0x2: dmfe_media_mode = DMFE_10MFD; break; /* 10MFD */ |
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index c98fc62a3e61..2c08c0a5a0df 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
| @@ -68,7 +68,7 @@ config WAVELAN | |||
| 68 | <http://www.tldp.org/docs.html#howto>. Some more specific | 68 | <http://www.tldp.org/docs.html#howto>. Some more specific |
| 69 | information is contained in | 69 | information is contained in |
| 70 | <file:Documentation/networking/wavelan.txt> and in the source code | 70 | <file:Documentation/networking/wavelan.txt> and in the source code |
| 71 | <file:drivers/net/wavelan.p.h>. | 71 | <file:drivers/net/wireless/wavelan.p.h>. |
| 72 | 72 | ||
| 73 | You will also need the wireless tools package available from | 73 | You will also need the wireless tools package available from |
| 74 | <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. | 74 | <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 1a6b0e0edf6f..0b3ec7e4d93b 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -6342,6 +6342,11 @@ static int __iwl_up(struct iwl_priv *priv) | |||
| 6342 | return 0; | 6342 | return 0; |
| 6343 | } | 6343 | } |
| 6344 | 6344 | ||
| 6345 | if (!priv->ucode_data_backup.v_addr || !priv->ucode_data.v_addr) { | ||
| 6346 | IWL_ERROR("ucode not available for device bringup\n"); | ||
| 6347 | return -EIO; | ||
| 6348 | } | ||
| 6349 | |||
| 6345 | iwl_write32(priv, CSR_INT, 0xFFFFFFFF); | 6350 | iwl_write32(priv, CSR_INT, 0xFFFFFFFF); |
| 6346 | 6351 | ||
| 6347 | rc = iwl_hw_nic_init(priv); | 6352 | rc = iwl_hw_nic_init(priv); |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index 6cd57c220631..15a45f471710 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
| @@ -6698,6 +6698,11 @@ static int __iwl_up(struct iwl_priv *priv) | |||
| 6698 | return 0; | 6698 | return 0; |
| 6699 | } | 6699 | } |
| 6700 | 6700 | ||
| 6701 | if (!priv->ucode_data_backup.v_addr || !priv->ucode_data.v_addr) { | ||
| 6702 | IWL_ERROR("ucode not available for device bringup\n"); | ||
| 6703 | return -EIO; | ||
| 6704 | } | ||
| 6705 | |||
| 6701 | iwl_write32(priv, CSR_INT, 0xFFFFFFFF); | 6706 | iwl_write32(priv, CSR_INT, 0xFFFFFFFF); |
| 6702 | 6707 | ||
| 6703 | rc = iwl_hw_nic_init(priv); | 6708 | rc = iwl_hw_nic_init(priv); |
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index a6676be87843..184c7ae78519 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
| @@ -732,7 +732,7 @@ config SCSI_GDTH | |||
| 732 | This is a driver for RAID/SCSI Disk Array Controllers (EISA/ISA/PCI) | 732 | This is a driver for RAID/SCSI Disk Array Controllers (EISA/ISA/PCI) |
| 733 | manufactured by Intel Corporation/ICP vortex GmbH. It is documented | 733 | manufactured by Intel Corporation/ICP vortex GmbH. It is documented |
| 734 | in the kernel source in <file:drivers/scsi/gdth.c> and | 734 | in the kernel source in <file:drivers/scsi/gdth.c> and |
| 735 | <file:drivers/scsi/gdth.h.> | 735 | <file:drivers/scsi/gdth.h>. |
| 736 | 736 | ||
| 737 | To compile this driver as a module, choose M here: the | 737 | To compile this driver as a module, choose M here: the |
| 738 | module will be called gdth. | 738 | module will be called gdth. |
diff --git a/drivers/scsi/initio.c b/drivers/scsi/initio.c index 01bf0189367d..a10a5c74b48d 100644 --- a/drivers/scsi/initio.c +++ b/drivers/scsi/initio.c | |||
| @@ -823,7 +823,7 @@ static void initio_append_busy_scb(struct initio_host * host, struct scsi_ctrl_b | |||
| 823 | { | 823 | { |
| 824 | 824 | ||
| 825 | #if DEBUG_QUEUE | 825 | #if DEBUG_QUEUE |
| 826 | printk("append busy SCB %o; ", scbp); | 826 | printk("append busy SCB %p; ", scbp); |
| 827 | #endif | 827 | #endif |
| 828 | if (scbp->tagmsg) | 828 | if (scbp->tagmsg) |
| 829 | host->act_tags[scbp->target]++; | 829 | host->act_tags[scbp->target]++; |
| @@ -2609,6 +2609,7 @@ static void initio_build_scb(struct initio_host * host, struct scsi_ctrl_blk * c | |||
| 2609 | cblk->bufptr = cpu_to_le32((u32)dma_addr); | 2609 | cblk->bufptr = cpu_to_le32((u32)dma_addr); |
| 2610 | cmnd->SCp.dma_handle = dma_addr; | 2610 | cmnd->SCp.dma_handle = dma_addr; |
| 2611 | 2611 | ||
| 2612 | cblk->sglen = nseg; | ||
| 2612 | 2613 | ||
| 2613 | cblk->flags |= SCF_SG; /* Turn on SG list flag */ | 2614 | cblk->flags |= SCF_SG; /* Turn on SG list flag */ |
| 2614 | total_len = 0; | 2615 | total_len = 0; |
| @@ -2869,6 +2870,7 @@ static int initio_probe_one(struct pci_dev *pdev, | |||
| 2869 | host = (struct initio_host *)shost->hostdata; | 2870 | host = (struct initio_host *)shost->hostdata; |
| 2870 | memset(host, 0, sizeof(struct initio_host)); | 2871 | memset(host, 0, sizeof(struct initio_host)); |
| 2871 | host->addr = pci_resource_start(pdev, 0); | 2872 | host->addr = pci_resource_start(pdev, 0); |
| 2873 | host->bios_addr = bios_seg; | ||
| 2872 | 2874 | ||
| 2873 | if (!request_region(host->addr, 256, "i91u")) { | 2875 | if (!request_region(host->addr, 256, "i91u")) { |
| 2874 | printk(KERN_WARNING "initio: I/O port range 0x%x is busy.\n", host->addr); | 2876 | printk(KERN_WARNING "initio: I/O port range 0x%x is busy.\n", host->addr); |
| @@ -2895,6 +2897,8 @@ static int initio_probe_one(struct pci_dev *pdev, | |||
| 2895 | 2897 | ||
| 2896 | host->pci_dev = pdev; | 2898 | host->pci_dev = pdev; |
| 2897 | 2899 | ||
| 2900 | host->semaph = 1; | ||
| 2901 | spin_lock_init(&host->semaph_lock); | ||
| 2898 | host->num_scbs = num_scb; | 2902 | host->num_scbs = num_scb; |
| 2899 | host->scb = scb; | 2903 | host->scb = scb; |
| 2900 | host->next_pending = scb; | 2904 | host->next_pending = scb; |
| @@ -2911,7 +2915,7 @@ static int initio_probe_one(struct pci_dev *pdev, | |||
| 2911 | host->last_avail = prev; | 2915 | host->last_avail = prev; |
| 2912 | spin_lock_init(&host->avail_lock); | 2916 | spin_lock_init(&host->avail_lock); |
| 2913 | 2917 | ||
| 2914 | initio_init(host, phys_to_virt(bios_seg << 4)); | 2918 | initio_init(host, phys_to_virt(((u32)bios_seg << 4))); |
| 2915 | 2919 | ||
| 2916 | host->jsstatus0 = 0; | 2920 | host->jsstatus0 = 0; |
| 2917 | 2921 | ||
diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index 4318935678c5..112f4ec59035 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c | |||
| @@ -112,7 +112,7 @@ static struct w1_therm_family_converter w1_therm_families[] = { | |||
| 112 | 112 | ||
| 113 | static inline int w1_DS18B20_convert_temp(u8 rom[9]) | 113 | static inline int w1_DS18B20_convert_temp(u8 rom[9]) |
| 114 | { | 114 | { |
| 115 | int t = (rom[1] << 8) | rom[0]; | 115 | s16 t = (rom[1] << 8) | rom[0]; |
| 116 | t /= 16; | 116 | t /= 16; |
| 117 | return t; | 117 | return t; |
| 118 | } | 118 | } |
| @@ -204,7 +204,7 @@ static ssize_t w1_therm_read_bin(struct kobject *kobj, | |||
| 204 | 204 | ||
| 205 | crc = w1_calc_crc8(rom, 8); | 205 | crc = w1_calc_crc8(rom, 8); |
| 206 | 206 | ||
| 207 | if (rom[8] == crc && rom[0]) | 207 | if (rom[8] == crc) |
| 208 | verdict = 1; | 208 | verdict = 1; |
| 209 | } | 209 | } |
| 210 | } | 210 | } |
diff --git a/fs/Kconfig b/fs/Kconfig index 487236c65837..781b47d2f9f2 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
| @@ -1112,8 +1112,8 @@ config HFS_FS | |||
| 1112 | help | 1112 | help |
| 1113 | If you say Y here, you will be able to mount Macintosh-formatted | 1113 | If you say Y here, you will be able to mount Macintosh-formatted |
| 1114 | floppy disks and hard drive partitions with full read-write access. | 1114 | floppy disks and hard drive partitions with full read-write access. |
| 1115 | Please read <file:fs/hfs/HFS.txt> to learn about the available mount | 1115 | Please read <file:Documentation/filesystems/hfs.txt> to learn about |
| 1116 | options. | 1116 | the available mount options. |
| 1117 | 1117 | ||
| 1118 | To compile this file system support as a module, choose M here: the | 1118 | To compile this file system support as a module, choose M here: the |
| 1119 | module will be called hfs. | 1119 | module will be called hfs. |
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index a66d4d1615f7..f2c1a04e9b18 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
| @@ -549,7 +549,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, | |||
| 549 | rdp->blimit = blimit; | 549 | rdp->blimit = blimit; |
| 550 | } | 550 | } |
| 551 | 551 | ||
| 552 | static void __devinit rcu_online_cpu(int cpu) | 552 | static void __cpuinit rcu_online_cpu(int cpu) |
| 553 | { | 553 | { |
| 554 | struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | 554 | struct rcu_data *rdp = &per_cpu(rcu_data, cpu); |
| 555 | struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu); | 555 | struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu); |
diff --git a/kernel/sched.c b/kernel/sched.c index 37cf07aa4164..e76b11ca6df3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -7153,6 +7153,14 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) | |||
| 7153 | { | 7153 | { |
| 7154 | int i; | 7154 | int i; |
| 7155 | 7155 | ||
| 7156 | /* | ||
| 7157 | * A weight of 0 or 1 can cause arithmetics problems. | ||
| 7158 | * (The default weight is 1024 - so there's no practical | ||
| 7159 | * limitation from this.) | ||
| 7160 | */ | ||
| 7161 | if (shares < 2) | ||
| 7162 | shares = 2; | ||
| 7163 | |||
| 7156 | spin_lock(&tg->lock); | 7164 | spin_lock(&tg->lock); |
| 7157 | if (tg->shares == shares) | 7165 | if (tg->shares == shares) |
| 7158 | goto done; | 7166 | goto done; |
diff --git a/mm/memory.c b/mm/memory.c index 6dd1cd88bfb6..4b0144b24c12 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
| @@ -1670,6 +1670,9 @@ gotten: | |||
| 1670 | unlock: | 1670 | unlock: |
| 1671 | pte_unmap_unlock(page_table, ptl); | 1671 | pte_unmap_unlock(page_table, ptl); |
| 1672 | if (dirty_page) { | 1672 | if (dirty_page) { |
| 1673 | if (vma->vm_file) | ||
| 1674 | file_update_time(vma->vm_file); | ||
| 1675 | |||
| 1673 | /* | 1676 | /* |
| 1674 | * Yes, Virginia, this is actually required to prevent a race | 1677 | * Yes, Virginia, this is actually required to prevent a race |
| 1675 | * with clear_page_dirty_for_io() from clearing the page dirty | 1678 | * with clear_page_dirty_for_io() from clearing the page dirty |
| @@ -2343,6 +2346,9 @@ out_unlocked: | |||
| 2343 | if (anon) | 2346 | if (anon) |
| 2344 | page_cache_release(vmf.page); | 2347 | page_cache_release(vmf.page); |
| 2345 | else if (dirty_page) { | 2348 | else if (dirty_page) { |
| 2349 | if (vma->vm_file) | ||
| 2350 | file_update_time(vma->vm_file); | ||
| 2351 | |||
| 2346 | set_page_dirty_balance(dirty_page, page_mkwrite); | 2352 | set_page_dirty_balance(dirty_page, page_mkwrite); |
| 2347 | put_page(dirty_page); | 2353 | put_page(dirty_page); |
| 2348 | } | 2354 | } |
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c index cad510309dcf..17f7fb720553 100644 --- a/net/bluetooth/hci_sysfs.c +++ b/net/bluetooth/hci_sysfs.c | |||
| @@ -316,9 +316,26 @@ void hci_conn_add_sysfs(struct hci_conn *conn) | |||
| 316 | schedule_work(&conn->work); | 316 | schedule_work(&conn->work); |
| 317 | } | 317 | } |
| 318 | 318 | ||
| 319 | static int __match_tty(struct device *dev, void *data) | ||
| 320 | { | ||
| 321 | /* The rfcomm tty device will possibly retain even when conn | ||
| 322 | * is down, and sysfs doesn't support move zombie device, | ||
| 323 | * so we should move the device before conn device is destroyed. | ||
| 324 | * Due to the only child device of hci_conn dev is rfcomm | ||
| 325 | * tty_dev, here just return 1 | ||
| 326 | */ | ||
| 327 | return 1; | ||
| 328 | } | ||
| 329 | |||
| 319 | static void del_conn(struct work_struct *work) | 330 | static void del_conn(struct work_struct *work) |
| 320 | { | 331 | { |
| 332 | struct device *dev; | ||
| 321 | struct hci_conn *conn = container_of(work, struct hci_conn, work); | 333 | struct hci_conn *conn = container_of(work, struct hci_conn, work); |
| 334 | |||
| 335 | while (dev = device_find_child(&conn->dev, NULL, __match_tty)) { | ||
| 336 | device_move(dev, NULL); | ||
| 337 | put_device(dev); | ||
| 338 | } | ||
| 322 | device_del(&conn->dev); | 339 | device_del(&conn->dev); |
| 323 | put_device(&conn->dev); | 340 | put_device(&conn->dev); |
| 324 | } | 341 | } |
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index a6a758dd1f7d..788c70321858 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
| @@ -696,7 +696,8 @@ static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp) | |||
| 696 | BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened); | 696 | BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened); |
| 697 | 697 | ||
| 698 | if (--dev->opened == 0) { | 698 | if (--dev->opened == 0) { |
| 699 | device_move(dev->tty_dev, NULL); | 699 | if (dev->tty_dev->parent) |
| 700 | device_move(dev->tty_dev, NULL); | ||
| 700 | 701 | ||
| 701 | /* Close DLC and dettach TTY */ | 702 | /* Close DLC and dettach TTY */ |
| 702 | rfcomm_dlc_close(dev->dlc, 0); | 703 | rfcomm_dlc_close(dev->dlc, 0); |
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 383252b50411..ec936ae92458 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c | |||
| @@ -18,7 +18,7 @@ static DEFINE_MUTEX(net_mutex); | |||
| 18 | LIST_HEAD(net_namespace_list); | 18 | LIST_HEAD(net_namespace_list); |
| 19 | 19 | ||
| 20 | struct net init_net; | 20 | struct net init_net; |
| 21 | EXPORT_SYMBOL_GPL(init_net); | 21 | EXPORT_SYMBOL(init_net); |
| 22 | 22 | ||
| 23 | /* | 23 | /* |
| 24 | * setup_net runs the initializers for the network namespace object. | 24 | * setup_net runs the initializers for the network namespace object. |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index fd99fbd685ea..bc9e57550e86 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
| @@ -1016,8 +1016,6 @@ alloc_new_skb: | |||
| 1016 | 1016 | ||
| 1017 | skb_fill_page_desc(skb, i, page, 0, 0); | 1017 | skb_fill_page_desc(skb, i, page, 0, 0); |
| 1018 | frag = &skb_shinfo(skb)->frags[i]; | 1018 | frag = &skb_shinfo(skb)->frags[i]; |
| 1019 | skb->truesize += PAGE_SIZE; | ||
| 1020 | atomic_add(PAGE_SIZE, &sk->sk_wmem_alloc); | ||
| 1021 | } else { | 1019 | } else { |
| 1022 | err = -EMSGSIZE; | 1020 | err = -EMSGSIZE; |
| 1023 | goto error; | 1021 | goto error; |
| @@ -1030,6 +1028,8 @@ alloc_new_skb: | |||
| 1030 | frag->size += copy; | 1028 | frag->size += copy; |
| 1031 | skb->len += copy; | 1029 | skb->len += copy; |
| 1032 | skb->data_len += copy; | 1030 | skb->data_len += copy; |
| 1031 | skb->truesize += copy; | ||
| 1032 | atomic_add(copy, &sk->sk_wmem_alloc); | ||
| 1033 | } | 1033 | } |
| 1034 | offset += copy; | 1034 | offset += copy; |
| 1035 | length -= copy; | 1035 | length -= copy; |
| @@ -1172,6 +1172,8 @@ ssize_t ip_append_page(struct sock *sk, struct page *page, | |||
| 1172 | 1172 | ||
| 1173 | skb->len += len; | 1173 | skb->len += len; |
| 1174 | skb->data_len += len; | 1174 | skb->data_len += len; |
| 1175 | skb->truesize += len; | ||
| 1176 | atomic_add(len, &sk->sk_wmem_alloc); | ||
| 1175 | offset += len; | 1177 | offset += len; |
| 1176 | size -= len; | 1178 | size -= len; |
| 1177 | } | 1179 | } |
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 6338a9c1aa14..3bef30e4a23d 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
| @@ -1316,8 +1316,6 @@ alloc_new_skb: | |||
| 1316 | 1316 | ||
| 1317 | skb_fill_page_desc(skb, i, page, 0, 0); | 1317 | skb_fill_page_desc(skb, i, page, 0, 0); |
| 1318 | frag = &skb_shinfo(skb)->frags[i]; | 1318 | frag = &skb_shinfo(skb)->frags[i]; |
| 1319 | skb->truesize += PAGE_SIZE; | ||
| 1320 | atomic_add(PAGE_SIZE, &sk->sk_wmem_alloc); | ||
| 1321 | } else { | 1319 | } else { |
| 1322 | err = -EMSGSIZE; | 1320 | err = -EMSGSIZE; |
| 1323 | goto error; | 1321 | goto error; |
| @@ -1330,6 +1328,8 @@ alloc_new_skb: | |||
| 1330 | frag->size += copy; | 1328 | frag->size += copy; |
| 1331 | skb->len += copy; | 1329 | skb->len += copy; |
| 1332 | skb->data_len += copy; | 1330 | skb->data_len += copy; |
| 1331 | skb->truesize += copy; | ||
| 1332 | atomic_add(copy, &sk->sk_wmem_alloc); | ||
| 1333 | } | 1333 | } |
| 1334 | offset += copy; | 1334 | offset += copy; |
| 1335 | length -= copy; | 1335 | length -= copy; |
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig index af37cd09bddd..857008bb7167 100644 --- a/sound/oss/Kconfig +++ b/sound/oss/Kconfig | |||
| @@ -75,7 +75,7 @@ config SOUND_TRIDENT | |||
| 75 | 75 | ||
| 76 | 76 | ||
| 77 | This driver differs slightly from OSS/Free, so PLEASE READ the | 77 | This driver differs slightly from OSS/Free, so PLEASE READ the |
| 78 | comments at the top of <file:drivers/sound/trident.c>. | 78 | comments at the top of <file:sound/oss/trident.c>. |
| 79 | 79 | ||
| 80 | config SOUND_MSNDCLAS | 80 | config SOUND_MSNDCLAS |
| 81 | tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" | 81 | tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" |
| @@ -564,7 +564,7 @@ config SOUND_AEDSP16 | |||
| 564 | questions. | 564 | questions. |
| 565 | 565 | ||
| 566 | Read the <file:Documentation/sound/oss/README.OSS> file and the head of | 566 | Read the <file:Documentation/sound/oss/README.OSS> file and the head of |
| 567 | <file:drivers/sound/aedsp16.c> as well as | 567 | <file:sound/oss/aedsp16.c> as well as |
| 568 | <file:Documentation/sound/oss/AudioExcelDSP16> to get more information | 568 | <file:Documentation/sound/oss/AudioExcelDSP16> to get more information |
| 569 | about this driver and its configuration. | 569 | about this driver and its configuration. |
| 570 | 570 | ||
