]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 26 Oct 2008 23:29:12 +0000 (16:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 26 Oct 2008 23:29:12 +0000 (16:29 -0700)
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
  leds-hp-disk: fix build warning
  ACPI: Oops in ACPI with git latest
  ACPI suspend: build fix for ACPI_SLEEP=n && XEN_SAVE_RESTORE=y.
  toshiba_acpi: always call input_sync() after input_report_switch()
  ACPI: Always report a sync event after a lid state change
  ACPI: cpufreq, processor: fix compile error in drivers/acpi/processor_perflib.c
  i7300_idle: Fix compile warning CONFIG_I7300_IDLE_IOAT_CHANNEL not defined
  i7300_idle: Cleanup based review comments
  i7300_idle: Disable ioat channel only on platforms where ile driver can load

21 files changed:
Documentation/hwmon/lm90
Makefile
drivers/char/amiserial.c
drivers/hwmon/abituguru3.c
drivers/hwmon/adt7473.c
drivers/hwmon/hwmon-vid.c
drivers/hwmon/lm90.c
drivers/hwmon/w83781d.c
drivers/ide/icside.c
drivers/ide/rapide.c
drivers/net/r8169.c
fs/compat.c
fs/eventpoll.c
fs/ext3/dir.c
fs/ext4/dir.c
fs/select.c
init/main.c
kernel/cgroup.c
kernel/stop_machine.c
net/wireless/Kconfig
scripts/kconfig/confdata.c

index e0d5206d1de347d5d4aeb332f0511443e13beae5..0e8411710238ff3c0a58c1f373031f3f7447ce5c 100644 (file)
@@ -8,7 +8,7 @@ Supported chips:
     Datasheet: Publicly available at the National Semiconductor website
                http://www.national.com/pf/LM/LM90.html
   * National Semiconductor LM89
-    Prefix: 'lm99'
+    Prefix: 'lm89' (no auto-detection)
     Addresses scanned: I2C 0x4c and 0x4d
     Datasheet: Publicly available at the National Semiconductor website
                http://www.national.com/mpf/LM/LM89.html
index 8e540515cb9714cf32d4c8401e9fd9fd182123eb..e9c5d47f31cdb42f8b98fc28065446a85fe7d2f6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 28
-EXTRAVERSION = -rc1
+EXTRAVERSION = -rc2
 NAME = Killer Bat of Doom
 
 # *DOCUMENTATION*
index 98821f97583c680b9ddc222d8c15e9909c0feb6b..b97aebd7aeb8d84af42f72291b06ecb3dcb6dff8 100644 (file)
@@ -2071,12 +2071,13 @@ module_init(rs_init)
 module_exit(rs_exit)
 
 
+#if defined(CONFIG_SERIAL_CONSOLE) && !defined(MODULE)
+
 /*
  * ------------------------------------------------------------
  * Serial console driver
  * ------------------------------------------------------------
  */
-#ifdef CONFIG_SERIAL_CONSOLE
 
 static void amiga_serial_putc(char c)
 {
@@ -2130,6 +2131,7 @@ static int __init amiserial_console_init(void)
        return 0;
 }
 console_initcall(amiserial_console_init);
-#endif
+
+#endif /* CONFIG_SERIAL_CONSOLE && !MODULE */
 
 MODULE_LICENSE("GPL");
index d9e7a49d6cbf089da4f14f054695bf6be727200e..70bb854086dff42890369b6ab67347c013d93d68 100644 (file)
@@ -178,7 +178,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM",                26, 1, 1, 1, 0 },
                { "CPU Fan",            32, 2, 60, 1, 0 },
                { "NB Fan",             33, 2, 60, 1, 0 },
@@ -200,7 +200,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM1",               26, 1, 1, 1, 0 },
                { "PWM2",               27, 1, 1, 1, 0 },
                { "PWM3",               28, 1, 1, 1, 0 },
@@ -229,7 +229,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM",                26, 1, 1, 1, 0 },
                { "CPU Fan",            32, 2, 60, 1, 0 },
                { "NB Fan",             33, 2, 60, 1, 0 },
@@ -250,7 +250,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM",                26, 1, 1, 1, 0 },
                { "CPU Fan",            32, 2, 60, 1, 0 },
                { "NB Fan",             33, 2, 60, 1, 0 },
@@ -342,7 +342,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM1",               26, 1, 1, 1, 0 },
                { "PWM2",               27, 1, 1, 1, 0 },
                { "PWM3",               28, 1, 1, 1, 0 },
@@ -371,7 +371,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM",                26, 1, 1, 1, 0 },
                { "CPU Fan",            32, 2, 60, 1, 0 },
                { "NB Fan",             33, 2, 60, 1, 0 },
@@ -402,7 +402,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "AUX3 Fan",           36, 2, 60, 1, 0 },
                { NULL, 0, 0, 0, 0, 0 } }
        },
-       { 0x0016, NULL /* AW9D-MAX, need DMI string */, {
+       { 0x0016, "AW9D-MAX       (Intel i975-ICH7)", {
                { "CPU Core",            0, 0, 10, 1, 0 },
                { "DDR2",                1, 0, 20, 1, 0 },
                { "DDR2 VTT",            2, 0, 10, 1, 0 },
@@ -416,7 +416,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM1",               26, 1, 1, 1, 0 },
                { "PWM2",               27, 1, 1, 1, 0 },
                { "PWM3",               28, 1, 1, 1, 0 },
@@ -446,7 +446,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "ATX +3.3V",          10, 0, 20, 1, 0 },
                { "ATX 5VSB",           11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            26, 1, 1, 1, 0 },
+               { "System",             26, 1, 1, 1, 0 },
                { "PWM",                27, 1, 1, 1, 0 },
                { "CPU FAN",            32, 2, 60, 1, 0 },
                { "SYS FAN",            34, 2, 60, 1, 0 },
@@ -469,7 +469,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM Phase1",         26, 1, 1, 1, 0 },
                { "PWM Phase2",         27, 1, 1, 1, 0 },
                { "PWM Phase3",         28, 1, 1, 1, 0 },
@@ -487,7 +487,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "DDR2",               13, 0, 20, 1, 0 },
                { "DDR2 VTT",           14, 0, 10, 1, 0 },
                { "CPU VTT",             3, 0, 20, 1, 0 },
-               { "NB 1.2V ",            4, 0, 10, 1, 0 },
+               { "NB 1.2V",             4, 0, 10, 1, 0 },
                { "SB 1.5V",             6, 0, 10, 1, 0 },
                { "HyperTransport",      5, 0, 10, 1, 0 },
                { "ATX +12V (24-Pin)",  12, 0, 60, 1, 0 },
@@ -496,7 +496,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "ATX +3.3V",          10, 0, 20, 1, 0 },
                { "ATX 5VSB",           11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
                { "PWM Phase1",         26, 1, 1, 1, 0 },
                { "PWM Phase2",         27, 1, 1, 1, 0 },
                { "PWM Phase3",         28, 1, 1, 1, 0 },
@@ -523,8 +523,8 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
                { "+3.3V",              10, 0, 20, 1, 0 },
                { "5VSB",               11, 0, 30, 1, 0 },
                { "CPU",                24, 1, 1, 1, 0 },
-               { "System ",            25, 1, 1, 1, 0 },
-               { "PWM ",               26, 1, 1, 1, 0 },
+               { "System",             25, 1, 1, 1, 0 },
+               { "PWM",                26, 1, 1, 1, 0 },
                { "PWM Phase2",         27, 1, 1, 1, 0 },
                { "PWM Phase3",         28, 1, 1, 1, 0 },
                { "PWM Phase4",         29, 1, 1, 1, 0 },
@@ -947,7 +947,7 @@ static int __devinit abituguru3_probe(struct platform_device *pdev)
        if (!abituguru3_motherboards[i].dmi_name) {
                printk(KERN_WARNING ABIT_UGURU3_NAME ": this motherboard was "
                        "not detected using DMI. Please send the output of "
-                       "\"dmidecode\" to the abituguru3 maintainer"
+                       "\"dmidecode\" to the abituguru3 maintainer "
                        "(see MAINTAINERS)\n");
        }
 #endif
index 3a0b63136479d7c4c701dc8eb6e3652e033c1831..b9a8ea30c99c822542682017fc40a4c83e99b4f7 100644 (file)
@@ -319,35 +319,24 @@ out:
 }
 
 /*
- * On this chip, voltages are given as a count of steps between a minimum
- * and maximum voltage, not a direct voltage.
+ * Conversions
  */
-static const int volt_convert_table[][2] = {
-       {2997, 3},
-       {4395, 4},
+
+/* IN are scaled acording to built-in resistors */
+static const int adt7473_scaling[] = {  /* .001 Volts */
+       2250, 3300
 };
+#define SCALE(val, from, to)   (((val) * (to) + ((from) / 2)) / (from))
 
 static int decode_volt(int volt_index, u8 raw)
 {
-       int cmax = volt_convert_table[volt_index][0];
-       int cmin = volt_convert_table[volt_index][1];
-       return ((raw * (cmax - cmin)) / 255) + cmin;
+       return SCALE(raw, 192, adt7473_scaling[volt_index]);
 }
 
 static u8 encode_volt(int volt_index, int cooked)
 {
-       int cmax = volt_convert_table[volt_index][0];
-       int cmin = volt_convert_table[volt_index][1];
-       u8 x;
-
-       if (cooked > cmax)
-               cooked = cmax;
-       else if (cooked < cmin)
-               cooked = cmin;
-
-       x = ((cooked - cmin) * 255) / (cmax - cmin);
-
-       return x;
+       int raw = SCALE(cooked, adt7473_scaling[volt_index], 192);
+       return SENSORS_LIMIT(raw, 0, 255);
 }
 
 static ssize_t show_volt_min(struct device *dev,
index c54eff92be4a6c4e6f45c1bf0d394fbc1c1f4655..bfc296145bba359572b5ed7f8b8fa7da23ec0773 100644 (file)
@@ -180,6 +180,7 @@ static struct vrm_model vrm_models[] = {
        {X86_VENDOR_AMD, 0x6, ANY, ANY, 90},            /* Athlon Duron etc */
        {X86_VENDOR_AMD, 0xF, 0x3F, ANY, 24},           /* Athlon 64, Opteron */
        {X86_VENDOR_AMD, 0xF, ANY, ANY, 25},            /* NPT family 0Fh */
+       {X86_VENDOR_AMD, 0x10, ANY, ANY, 25},           /* NPT family 10h */
        {X86_VENDOR_INTEL, 0x6, 0x9, ANY, 13},          /* Pentium M (130 nm) */
        {X86_VENDOR_INTEL, 0x6, 0xB, ANY, 85},          /* Tualatin */
        {X86_VENDOR_INTEL, 0x6, 0xD, ANY, 13},          /* Pentium M (90 nm) */
index 3edeebc0b8355361532becdcb246d6493924be44..96a7018667261a947c913ab667433facc35d7782 100644 (file)
@@ -12,9 +12,9 @@
  * made by National Semiconductor. Both have an increased remote
  * temperature measurement accuracy (1 degree), and the LM99
  * additionally shifts remote temperatures (measured and limits) by 16
- * degrees, which allows for higher temperatures measurement. The
- * driver doesn't handle it since it can be done easily in user-space.
+ * degrees, which allows for higher temperatures measurement.
  * Note that there is no way to differentiate between both chips.
+ * When device is auto-detected, the driver will assume an LM99.
  *
  * This driver also supports the LM86, another sensor chip made by
  * National Semiconductor. It is exactly similar to the LM90 except it
@@ -169,8 +169,8 @@ static const struct i2c_device_id lm90_id[] = {
        { "adt7461", adt7461 },
        { "lm90", lm90 },
        { "lm86", lm86 },
-       { "lm89", lm99 },
-       { "lm99", lm99 },       /* Missing temperature offset */
+       { "lm89", lm86 },
+       { "lm99", lm99 },
        { "max6646", max6646 },
        { "max6647", max6646 },
        { "max6649", max6646 },
@@ -366,6 +366,10 @@ static ssize_t show_temp8(struct device *dev, struct device_attribute *devattr,
        else
                temp = temp_from_s8(data->temp8[attr->index]);
 
+       /* +16 degrees offset for temp2 for the LM99 */
+       if (data->kind == lm99 && attr->index == 3)
+               temp += 16000;
+
        return sprintf(buf, "%d\n", temp);
 }
 
@@ -385,6 +389,10 @@ static ssize_t set_temp8(struct device *dev, struct device_attribute *devattr,
        long val = simple_strtol(buf, NULL, 10);
        int nr = attr->index;
 
+       /* +16 degrees offset for temp2 for the LM99 */
+       if (data->kind == lm99 && attr->index == 3)
+               val -= 16000;
+
        mutex_lock(&data->update_lock);
        if (data->kind == adt7461)
                data->temp8[nr] = temp_to_u8_adt7461(data, val);
@@ -411,6 +419,10 @@ static ssize_t show_temp11(struct device *dev, struct device_attribute *devattr,
        else
                temp = temp_from_s16(data->temp11[attr->index]);
 
+       /* +16 degrees offset for temp2 for the LM99 */
+       if (data->kind == lm99 &&  attr->index <= 2)
+               temp += 16000;
+
        return sprintf(buf, "%d\n", temp);
 }
 
@@ -432,6 +444,10 @@ static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr,
        long val = simple_strtol(buf, NULL, 10);
        int nr = attr->index;
 
+       /* +16 degrees offset for temp2 for the LM99 */
+       if (data->kind == lm99 && attr->index <= 2)
+               val -= 16000;
+
        mutex_lock(&data->update_lock);
        if (data->kind == adt7461)
                data->temp11[nr] = temp_to_u16_adt7461(data, val);
@@ -461,9 +477,15 @@ static ssize_t show_temphyst(struct device *dev, struct device_attribute *devatt
 
        if (data->kind == adt7461)
                temp = temp_from_u8_adt7461(data, data->temp8[attr->index]);
+       else if (data->kind == max6646)
+               temp = temp_from_u8(data->temp8[attr->index]);
        else
                temp = temp_from_s8(data->temp8[attr->index]);
 
+       /* +16 degrees offset for temp2 for the LM99 */
+       if (data->kind == lm99 && attr->index == 3)
+               temp += 16000;
+
        return sprintf(buf, "%d\n", temp - temp_from_s8(data->temp_hyst));
 }
 
@@ -473,12 +495,19 @@ static ssize_t set_temphyst(struct device *dev, struct device_attribute *dummy,
        struct i2c_client *client = to_i2c_client(dev);
        struct lm90_data *data = i2c_get_clientdata(client);
        long val = simple_strtol(buf, NULL, 10);
-       long hyst;
+       int temp;
 
        mutex_lock(&data->update_lock);
-       hyst = temp_from_s8(data->temp8[2]) - val;
+       if (data->kind == adt7461)
+               temp = temp_from_u8_adt7461(data, data->temp8[2]);
+       else if (data->kind == max6646)
+               temp = temp_from_u8(data->temp8[2]);
+       else
+               temp = temp_from_s8(data->temp8[2]);
+
+       data->temp_hyst = hyst_to_reg(temp - val);
        i2c_smbus_write_byte_data(client, LM90_REG_W_TCRIT_HYST,
-                                 hyst_to_reg(hyst));
+                                 data->temp_hyst);
        mutex_unlock(&data->update_lock);
        return count;
 }
@@ -682,6 +711,15 @@ static int lm90_detect(struct i2c_client *new_client, int kind,
                                } else
                                if ((chip_id & 0xF0) == 0x30) { /* LM89/LM99 */
                                        kind = lm99;
+                                       dev_info(&adapter->dev,
+                                                "Assuming LM99 chip at "
+                                                "0x%02x\n", address);
+                                       dev_info(&adapter->dev,
+                                                "If it is an LM89, pass "
+                                                "force_lm86=%d,0x%02x when "
+                                                "loading the lm90 driver\n",
+                                                i2c_adapter_id(adapter),
+                                                address);
                                } else
                                if (address == 0x4C
                                 && (chip_id & 0xF0) == 0x10) { /* LM86 */
index d4d1b859d4f1df2a9262fd3a22629de4eb484292..fc12bd412e3a4917b5645339d3dd388af8f0d3a3 100644 (file)
@@ -1968,7 +1968,7 @@ exit:
        return res;
 }
 
-static void __exit
+static void
 w83781d_isa_unregister(void)
 {
        if (pdev) {
@@ -2017,7 +2017,7 @@ w83781d_isa_register(void)
        return 0;
 }
 
-static void __exit
+static void
 w83781d_isa_unregister(void)
 {
 }
index 76bdc9a27f6f7ae91bbdd0ad4635fb169229a27c..2d848010499dfed1997e0f0eed459cb0cff847ec 100644 (file)
@@ -690,9 +690,9 @@ static int __init icside_init(void)
        return ecard_register_driver(&icside_driver);
 }
 
-static void __exit icside_exit(void);
+static void __exit icside_exit(void)
 {
-       ecard_unregister_driver(&icside_driver);
+       ecard_remove_driver(&icside_driver);
 }
 
 MODULE_AUTHOR("Russell King <rmk@arm.linux.org.uk>");
index 78d27d9ae4303ab6ee1dd4d2860445b80ea69a2d..d5003ca69801684bdc71e65db78767a41445c42e 100644 (file)
@@ -11,7 +11,7 @@
 
 #include <asm/ecard.h>
 
-static struct const ide_port_info rapide_port_info = {
+static const struct ide_port_info rapide_port_info = {
        .host_flags             = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA,
 };
 
@@ -97,7 +97,7 @@ static int __init rapide_init(void)
 
 static void __exit rapide_exit(void)
 {
-       ecard_unregister_driver(&rapide_driver);
+       ecard_remove_driver(&rapide_driver);
 }
 
 MODULE_LICENSE("GPL");
index 2b4e975770f3a950d982f4f084d4ff81f8c94301..4b7cb389dc4989edaf2f70ce9da55420484767bd 100644 (file)
@@ -1915,92 +1915,6 @@ static void rtl_disable_msi(struct pci_dev *pdev, struct rtl8169_private *tp)
        }
 }
 
-static int rtl_eeprom_read(struct pci_dev *pdev, int cap, int addr, __le32 *val)
-{
-       int ret, count = 100;
-       u16 status = 0;
-       u32 value;
-
-       ret = pci_write_config_word(pdev, cap + PCI_VPD_ADDR, addr);
-       if (ret < 0)
-               return ret;
-
-       do {
-               udelay(10);
-               ret = pci_read_config_word(pdev, cap + PCI_VPD_ADDR, &status);
-               if (ret < 0)
-                       return ret;
-       } while (!(status & PCI_VPD_ADDR_F) && --count);
-
-       if (!(status & PCI_VPD_ADDR_F))
-               return -ETIMEDOUT;
-
-       ret = pci_read_config_dword(pdev, cap + PCI_VPD_DATA, &value);
-       if (ret < 0)
-               return ret;
-
-       *val = cpu_to_le32(value);
-
-       return 0;
-}
-
-static void rtl_init_mac_address(struct rtl8169_private *tp,
-                                void __iomem *ioaddr)
-{
-       struct pci_dev *pdev = tp->pci_dev;
-       int vpd_cap;
-       __le32 sig;
-       u8 mac[8];
-       u8 cfg1;
-
-       cfg1 = RTL_R8(Config1);
-       if (!(cfg1  & VPD)) {
-               if (netif_msg_probe(tp))
-                       dev_info(&pdev->dev, "VPD access disabled, enabling\n");
-               RTL_W8(Cfg9346, Cfg9346_Unlock);
-               RTL_W8(Config1, cfg1 | VPD);
-               RTL_W8(Cfg9346, Cfg9346_Lock);
-       }
-
-       vpd_cap = pci_find_capability(pdev, PCI_CAP_ID_VPD);
-       if (!vpd_cap)
-               return;
-
-       if (rtl_eeprom_read(pdev, vpd_cap, RTL_EEPROM_SIG_ADDR, &sig) < 0)
-               return;
-
-       if ((sig & RTL_EEPROM_SIG_MASK) != RTL_EEPROM_SIG) {
-               dev_info(&pdev->dev, "Missing EEPROM signature: %08x\n", sig);
-               return;
-       }
-
-       /*
-        * MAC address is stored in EEPROM at offset 0x0e
-        * Realtek says: "The VPD address does not have to be a DWORD-aligned
-        * address as defined in the PCI 2.2 Specifications, but the VPD data
-        * is always consecutive 4-byte data starting from the VPD address
-        * specified."
-        */
-       if (rtl_eeprom_read(pdev, vpd_cap, 0x000e, (__le32*)&mac[0]) < 0 ||
-           rtl_eeprom_read(pdev, vpd_cap, 0x0012, (__le32*)&mac[4]) < 0) {
-               if (netif_msg_probe(tp)) {
-                       dev_warn(&pdev->dev,
-                                "reading MAC address from EEPROM failed\n");
-               }
-               return;
-       }
-
-       if (netif_msg_probe(tp)) {
-               DECLARE_MAC_BUF(buf);
-
-               dev_info(&pdev->dev, "MAC address found in EEPROM: %s\n",
-                        print_mac(buf, mac));
-       }
-
-       if (is_valid_ether_addr(mac))
-               rtl_rar_set(tp, mac);
-}
-
 static int __devinit
 rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
@@ -2178,8 +2092,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        tp->mmio_addr = ioaddr;
 
-       rtl_init_mac_address(tp, ioaddr);
-
        /* Get MAC address */
        for (i = 0; i < MAC_ADDR_LEN; i++)
                dev->dev_addr[i] = RTL_R8(MAC0 + i);
index fe3c9bf876089f1d71f7b45b92fb5110693eb599..e5f49f5385028b865aca64890a588eaa173db042 100644 (file)
@@ -1684,8 +1684,9 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
                        return -EFAULT;
 
                to = &end_time;
-               if (poll_select_set_timeout(to, tv.tv_sec,
-                                           tv.tv_usec * NSEC_PER_USEC))
+               if (poll_select_set_timeout(to,
+                               tv.tv_sec + (tv.tv_usec / USEC_PER_SEC),
+                               (tv.tv_usec % USEC_PER_SEC) * NSEC_PER_USEC))
                        return -EINVAL;
        }
 
index 99368bda0261321290a6afa52ad74a797f79cd54..aec5c13f634177bab34f108e9f4891e300b873a3 100644 (file)
@@ -930,8 +930,15 @@ errxit:
         * inside the main ready-list here.
         */
        for (nepi = ep->ovflist; (epi = nepi) != NULL;
-            nepi = epi->next, epi->next = EP_UNACTIVE_PTR)
-               list_add_tail(&epi->rdllink, &ep->rdllist);
+            nepi = epi->next, epi->next = EP_UNACTIVE_PTR) {
+               /*
+                * If the above loop quit with errors, the epoll item might still
+                * be linked to "txlist", and the list_splice() done below will
+                * take care of those cases.
+                */
+               if (!ep_is_linked(&epi->rdllink))
+                       list_add_tail(&epi->rdllink, &ep->rdllist);
+       }
        /*
         * We need to set back ep->ovflist to EP_UNACTIVE_PTR, so that after
         * releasing the lock, events will be queued in the normal way inside
index 4c82531ea0a8b0d13ce61b63eb7daeecbe5d1423..5853f4440af41949081cfd2bf3e2b8f1b9363c18 100644 (file)
@@ -456,17 +456,8 @@ static int ext3_dx_readdir(struct file * filp,
        if (info->extra_fname) {
                if (call_filldir(filp, dirent, filldir, info->extra_fname))
                        goto finished;
-
                info->extra_fname = NULL;
-               info->curr_node = rb_next(info->curr_node);
-               if (!info->curr_node) {
-                       if (info->next_hash == ~0) {
-                               filp->f_pos = EXT3_HTREE_EOF;
-                               goto finished;
-                       }
-                       info->curr_hash = info->next_hash;
-                       info->curr_minor_hash = 0;
-               }
+               goto next_node;
        } else if (!info->curr_node)
                info->curr_node = rb_first(&info->root);
 
@@ -498,9 +489,14 @@ static int ext3_dx_readdir(struct file * filp,
                info->curr_minor_hash = fname->minor_hash;
                if (call_filldir(filp, dirent, filldir, fname))
                        break;
-
+       next_node:
                info->curr_node = rb_next(info->curr_node);
-               if (!info->curr_node) {
+               if (info->curr_node) {
+                       fname = rb_entry(info->curr_node, struct fname,
+                                        rb_hash);
+                       info->curr_hash = fname->hash;
+                       info->curr_minor_hash = fname->minor_hash;
+               } else {
                        if (info->next_hash == ~0) {
                                filp->f_pos = EXT3_HTREE_EOF;
                                break;
index 3ca6a2b7632dcd987db185d3fbe40926628b3d78..fed5b610df5ac4485e0db7a5c796154ba89b9247 100644 (file)
@@ -459,17 +459,8 @@ static int ext4_dx_readdir(struct file *filp,
        if (info->extra_fname) {
                if (call_filldir(filp, dirent, filldir, info->extra_fname))
                        goto finished;
-
                info->extra_fname = NULL;
-               info->curr_node = rb_next(info->curr_node);
-               if (!info->curr_node) {
-                       if (info->next_hash == ~0) {
-                               filp->f_pos = EXT4_HTREE_EOF;
-                               goto finished;
-                       }
-                       info->curr_hash = info->next_hash;
-                       info->curr_minor_hash = 0;
-               }
+               goto next_node;
        } else if (!info->curr_node)
                info->curr_node = rb_first(&info->root);
 
@@ -501,9 +492,14 @@ static int ext4_dx_readdir(struct file *filp,
                info->curr_minor_hash = fname->minor_hash;
                if (call_filldir(filp, dirent, filldir, fname))
                        break;
-
+       next_node:
                info->curr_node = rb_next(info->curr_node);
-               if (!info->curr_node) {
+               if (info->curr_node) {
+                       fname = rb_entry(info->curr_node, struct fname,
+                                        rb_hash);
+                       info->curr_hash = fname->hash;
+                       info->curr_minor_hash = fname->minor_hash;
+               } else {
                        if (info->next_hash == ~0) {
                                filp->f_pos = EXT4_HTREE_EOF;
                                break;
index 448e44001286754f891249f216f7af3a01d1bfee..87df51eadcf2bd170ab0271e189cf8a580aa1adb 100644 (file)
@@ -519,8 +519,9 @@ asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
                        return -EFAULT;
 
                to = &end_time;
-               if (poll_select_set_timeout(to, tv.tv_sec,
-                                           tv.tv_usec * NSEC_PER_USEC))
+               if (poll_select_set_timeout(to,
+                               tv.tv_sec + (tv.tv_usec / USEC_PER_SEC),
+                               (tv.tv_usec % USEC_PER_SEC) * NSEC_PER_USEC))
                        return -EINVAL;
        }
 
index 130d1a0eef113ef62f873d386f689f8533591d28..7e117a231af10313f1b9bd963bf404eecaf94c9e 100644 (file)
@@ -768,6 +768,7 @@ static void __init do_initcalls(void)
 static void __init do_basic_setup(void)
 {
        rcu_init_sched(); /* needed by module_init stage. */
+       init_workqueues();
        usermodehelper_init();
        driver_init();
        init_irq_proc();
@@ -851,8 +852,6 @@ static int __init kernel_init(void * unused)
 
        cad_pid = task_pid(current);
 
-       init_workqueues();
-
        smp_prepare_cpus(setup_max_cpus);
 
        do_pre_smp_initcalls();
index 046c1609606bc627059aa6cd5df687fa86f15d3b..35eebd5510c2165c6f8daa2cef1fecab9187d6d0 100644 (file)
@@ -2104,7 +2104,7 @@ static void *cgroup_tasks_start(struct seq_file *s, loff_t *pos)
        down_read(&cgrp->pids_mutex);
        if (pid) {
                int end = cgrp->pids_length;
-               int i;
+
                while (index < end) {
                        int mid = (index + end) / 2;
                        if (cgrp->tasks_pids[mid] == pid) {
index 8aff79d90ddccd3647cb884664920e45c609fe72..9bc4c00872c927a1033013a31ab19630ba9dc170 100644 (file)
@@ -160,4 +160,4 @@ static int __init stop_machine_init(void)
        stop_machine_work = alloc_percpu(struct work_struct);
        return 0;
 }
-early_initcall(stop_machine_init);
+core_initcall(stop_machine_init);
index 7d82be07fa1ddc7f907d1ad4a9471754bc722fad..646c7121dbc0a78ca0c3018f6e6025ff9bca5249 100644 (file)
@@ -16,7 +16,7 @@ config NL80211
 
 config WIRELESS_OLD_REGULATORY
        bool "Old wireless static regulatory definitions"
-       default n
+       default y
        ---help---
          This option enables the old static regulatory information
          and uses it within the new framework. This is available
@@ -40,11 +40,10 @@ config WIRELESS_OLD_REGULATORY
          ieee80211_regdom module parameter. This is being phased out and you
          should stop using them ASAP.
 
-         Say N unless you cannot install a new userspace application
-         or have one currently depending on the ieee80211_regdom module
-         parameter and cannot port it to use the new userspace interfaces.
-
-         This is scheduled for removal for 2.6.29.
+         Say Y unless you have installed a new userspace application.
+         Also say Y if have one currently depending on the ieee80211_regdom
+         module parameter and cannot port it to use the new userspace
+         interfaces.
 
 config WIRELESS_EXT
        bool "Wireless extensions"
index b91cf241a539ceaadbf603374d45b3c012a24e41..830d9eae11f99210d4f0c51ec177446e8074d6d0 100644 (file)
@@ -852,8 +852,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
 
        }
 
-       if (modules_sym)
-               sym_calc_value(modules_sym);
+       sym_clear_all_valid();
 
        if (mode != def_random)
                return;