--- /dev/null
+From jejb@kernel.org Tue Nov 11 10:13:14 2008
+From: Dan Williams <dan.j.williams@intel.com>
+Date: Tue, 11 Nov 2008 17:50:03 GMT
+Subject: dca: fixup initialization dependency
+To: stable@kernel.org
+Message-ID: <200811111750.mABHo3Uf025596@hera.kernel.org>
+
+From: Dan Williams <dan.j.williams@intel.com>
+
+commit 1207e795568a368928dfd23d6817e47f2e8097e3 upstream
+
+Mark dca_init as a subsys_initcall since it needs to be ready to go
+before dependent drivers start registering themselves.
+
+Reported-and-tested-by: Mark Rustad <mark_rustad@Xiotech.com>
+Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Signed-off-by: Dan Williams <dan.j.williams@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/dca/dca-core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/dca/dca-core.c
++++ b/drivers/dca/dca-core.c
+@@ -270,6 +270,6 @@ static void __exit dca_exit(void)
+ dca_sysfs_exit();
+ }
+
+-module_init(dca_init);
++subsys_initcall(dca_init);
+ module_exit(dca_exit);
+
--- /dev/null
+From linux-kernel@vger.kernel.org Tue Nov 11 10:19:48 2008
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Thu, 6 Nov 2008 23:59:14 GMT
+Subject: hwmon: applesmc: add support for iMac 5
+Message-ID: <200811062359.mA6NxE4M025336@hera.kernel.org>
+
+From: Henrik Rydberg <rydberg@euromail.se>
+
+Commit 6e3530fa241ae759313496f67295c9252691ed04 upstream
+
+hwmon: applesmc: add support for iMac 5
+
+Add temperature sensor support for iMac 5.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Tested-by: Ricky Campbell <johnrcampbell@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -113,6 +113,8 @@ static const char* temperature_sensors_s
+ /* Set 9: Macbook Pro 3,1 (Santa Rosa) */
+ { "TALP", "TB0T", "TC0D", "TC0P", "TG0D", "TG0H", "TTF0", "TW0P",
+ "Th0H", "Th1H", "Th2H", "Tm0P", "Ts0P", NULL },
++/* Set 10: iMac 5,1 */
++ { "TA0P", "TC0D", "TC0P", "TG0D", "TH0P", "TO0P", "Tm0P", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1248,6 +1250,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 1, .light = 1, .temperature_set = 8 },
+ /* MacBook Pro 3: accelerometer, backlight and temperature set 9 */
+ { .accelerometer = 1, .light = 1, .temperature_set = 9 },
++/* iMac 5: light sensor only, temperature set 10 */
++ { .accelerometer = 0, .light = 0, .temperature_set = 10 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1289,6 +1293,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacPro2") },
+ (void*)&applesmc_dmi_data[4]},
++ { applesmc_dmi_match, "Apple iMac 5", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "iMac5") },
++ &applesmc_dmi_data[10]},
+ { applesmc_dmi_match, "Apple iMac", {
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"iMac") },
--- /dev/null
+From linux-kernel@vger.kernel.org Tue Nov 11 10:21:34 2008
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Thu, 6 Nov 2008 23:59:20 GMT
+Subject: hwmon: applesmc: add support for iMac 8
+Message-ID: <200811062359.mA6NxK7H025435@hera.kernel.org>
+
+From: Henrik Rydberg <rydberg@euromail.se>
+
+Commit eefc488f96cdde6e152b45675b50bf380b95d99f upstream
+
+hwmon: applesmc: add support for iMac 8
+
+Add temperature sensor support for iMac 8.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Tested-by: Klaus Doblmann <klaus.doblmann@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -122,6 +122,9 @@ static const char* temperature_sensors_s
+ { "TB0T", "TB1T", "TB2T", "TB3T", "TC0D", "TC0F", "TC0P", "TG0D",
+ "TG0F", "TG0H", "TG0P", "TG0T", "TG1H", "TN0D", "TN0P", "TTF0",
+ "Th2H", "Tm0P", "Ts0P", "Ts0S", NULL },
++/* Set 13: iMac 8,1 */
++ { "TA0P", "TC0D", "TC0H", "TC0P", "TG0D", "TG0H", "TG0P", "TH0P",
++ "TL0P", "TO0P", "TW0P", "Tm0P", "Tp0P", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1263,6 +1266,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 1, .light = 1, .temperature_set = 11 },
+ /* MacBook Pro 5: accelerometer, backlight and temperature set 12 */
+ { .accelerometer = 1, .light = 1, .temperature_set = 12 },
++/* iMac 8: light sensor only, temperature set 13 */
++ { .accelerometer = 0, .light = 0, .temperature_set = 13 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1312,6 +1317,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacPro2") },
+ (void*)&applesmc_dmi_data[4]},
++ { applesmc_dmi_match, "Apple iMac 8", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "iMac8") },
++ &applesmc_dmi_data[13]},
+ { applesmc_dmi_match, "Apple iMac 5", {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "iMac5") },
--- /dev/null
+From linux-kernel@vger.kernel.org Tue Nov 11 10:19:06 2008
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Thu, 6 Nov 2008 23:59:16 GMT
+Subject: hwmon: applesmc: add support for Macbook 5
+Message-ID: <200811062359.mA6NxGPp025363@hera.kernel.org>
+
+From: Henrik Rydberg <rydberg@euromail.se>
+
+Commit 181209a1d91756bfd83b1d6ce2008cea3ca225b6 upstream
+
+hwmon: applesmc: add support for Macbook 5
+
+Add accelerometer, backlight and temperature sensor support for the new
+unibody Macbook 5.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Tested-by: David M. Lary <dmlary@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -115,6 +115,9 @@ static const char* temperature_sensors_s
+ "Th0H", "Th1H", "Th2H", "Tm0P", "Ts0P", NULL },
+ /* Set 10: iMac 5,1 */
+ { "TA0P", "TC0D", "TC0P", "TG0D", "TH0P", "TO0P", "Tm0P", NULL },
++/* Set 11: Macbook 5,1 */
++ { "TB0T", "TB1T", "TB2T", "TB3T", "TC0D", "TC0P", "TN0D", "TN0P",
++ "TTF0", "Th0H", "Th1H", "ThFH", "Ts0P", "Ts0S", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1252,6 +1255,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 1, .light = 1, .temperature_set = 9 },
+ /* iMac 5: light sensor only, temperature set 10 */
+ { .accelerometer = 0, .light = 0, .temperature_set = 10 },
++/* MacBook 5: accelerometer, backlight and temperature set 11 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 11 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1281,6 +1286,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBook3") },
+ (void*)&applesmc_dmi_data[6]},
++ { applesmc_dmi_match, "Apple MacBook 5", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5") },
++ &applesmc_dmi_data[11]},
+ { applesmc_dmi_match, "Apple MacBook", {
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBook") },
--- /dev/null
+From f5274c972bac2d14c092a9c634e03f51785c7b76 Mon Sep 17 00:00:00 2001
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Sat, 18 Oct 2008 20:27:40 -0700
+Subject: hwmon: applesmc: add support for Macbook Air
+
+commit f5274c972bac2d14c092a9c634e03f51785c7b76 upstream
+
+This patch adds accelerometer, backlight and temperature sensor support
+for the Macbook Air.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Cc: Nicolas Boichat <nicolas@boichat.ch>
+Cc: Riki Oktarianto <rkoktarianto@gmail.com>
+Cc: Mark M. Hoffman <mhoffman@lightlink.com>
+Cc: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -104,6 +104,9 @@ static const char* temperature_sensors_s
+ /* Set 6: Macbook3 set */
+ { "TB0T", "TC0D", "TC0P", "TM0P", "TN0P", "TTF0", "TW0P", "Th0H",
+ "Th0S", "Th1H", NULL },
++/* Set 7: Macbook Air */
++ { "TB0T", "TB1S", "TB1T", "TB2S", "TB2T", "TC0D", "TC0P", "TCFP",
++ "TTF0", "TW0P", "Th0H", "Tp0P", "TpFP", "Ts0P", "Ts0S", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1233,11 +1236,17 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 0, .light = 0, .temperature_set = 5 },
+ /* MacBook3: accelerometer and temperature set 6 */
+ { .accelerometer = 1, .light = 0, .temperature_set = 6 },
++/* MacBook Air: accelerometer, backlight and temperature set 7 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 7 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+ * So we need to put "Apple MacBook Pro" before "Apple MacBook". */
+ static __initdata struct dmi_system_id applesmc_whitelist[] = {
++ { applesmc_dmi_match, "Apple MacBook Air", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir") },
++ (void*)&applesmc_dmi_data[7]},
+ { applesmc_dmi_match, "Apple MacBook Pro", {
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },
--- /dev/null
+From 07e8dbd3ebbdedc71335049dd4b0d542cb038d7d Mon Sep 17 00:00:00 2001
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Sat, 18 Oct 2008 20:27:42 -0700
+Subject: hwmon: applesmc: Add support for Macbook Pro 3
+
+From: Henrik Rydberg <rydberg@euromail.se>
+
+commit 07e8dbd3ebbdedc71335049dd4b0d542cb038d7d upstream
+
+Add temperature sensor support for Macbook Pro 3.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Cc: Nicolas Boichat <nicolas@boichat.ch>
+Cc: Riki Oktarianto <rkoktarianto@gmail.com>
+Cc: Mark M. Hoffman <mhoffman@lightlink.com>
+Cc: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -110,6 +110,9 @@ static const char* temperature_sensors_s
+ /* Set 8: Macbook Pro 4,1 (Penryn) */
+ { "TB0T", "TC0D", "TC0P", "TG0D", "TG0H", "TTF0", "TW0P", "Th0H",
+ "Th1H", "Th2H", "Tm0P", "Ts0P", NULL },
++/* Set 9: Macbook Pro 3,1 (Santa Rosa) */
++ { "TALP", "TB0T", "TC0D", "TC0P", "TG0D", "TG0H", "TTF0", "TW0P",
++ "Th0H", "Th1H", "Th2H", "Tm0P", "Ts0P", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1243,6 +1246,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 1, .light = 1, .temperature_set = 7 },
+ /* MacBook Pro 4: accelerometer, backlight and temperature set 8 */
+ { .accelerometer = 1, .light = 1, .temperature_set = 8 },
++/* MacBook Pro 3: accelerometer, backlight and temperature set 9 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 9 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1256,6 +1261,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro4") },
+ &applesmc_dmi_data[8]},
++ { applesmc_dmi_match, "Apple MacBook Pro 3", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro3") },
++ &applesmc_dmi_data[9]},
+ { applesmc_dmi_match, "Apple MacBook Pro", {
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },
--- /dev/null
+From d7549905f157f217b888edb0f2055f5090eaf1d8 Mon Sep 17 00:00:00 2001
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Sat, 18 Oct 2008 20:27:41 -0700
+Subject: hwmon: applesmc: Add support for Macbook Pro 4
+
+commit d7549905f157f217b888edb0f2055f5090eaf1d8 upstream
+
+Adds temperature sensor support for the Macbook Pro 4.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Cc: Nicolas Boichat <nicolas@boichat.ch>
+Cc: Riki Oktarianto <rkoktarianto@gmail.com>
+Cc: Mark M. Hoffman <mhoffman@lightlink.com>
+Cc: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -107,6 +107,9 @@ static const char* temperature_sensors_s
+ /* Set 7: Macbook Air */
+ { "TB0T", "TB1S", "TB1T", "TB2S", "TB2T", "TC0D", "TC0P", "TCFP",
+ "TTF0", "TW0P", "Th0H", "Tp0P", "TpFP", "Ts0P", "Ts0S", NULL },
++/* Set 8: Macbook Pro 4,1 (Penryn) */
++ { "TB0T", "TC0D", "TC0P", "TG0D", "TG0H", "TTF0", "TW0P", "Th0H",
++ "Th1H", "Th2H", "Tm0P", "Ts0P", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1238,6 +1241,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 1, .light = 0, .temperature_set = 6 },
+ /* MacBook Air: accelerometer, backlight and temperature set 7 */
+ { .accelerometer = 1, .light = 1, .temperature_set = 7 },
++/* MacBook Pro 4: accelerometer, backlight and temperature set 8 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 8 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1247,6 +1252,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir") },
+ (void*)&applesmc_dmi_data[7]},
++ { applesmc_dmi_match, "Apple MacBook Pro 4", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro4") },
++ &applesmc_dmi_data[8]},
+ { applesmc_dmi_match, "Apple MacBook Pro", {
+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },
--- /dev/null
+From linux-kernel@vger.kernel.org Tue Nov 11 10:20:22 2008
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Thu, 6 Nov 2008 23:59:18 GMT
+Subject: hwmon: applesmc: add support for Macbook Pro 5
+Message-ID: <200811062359.mA6NxIWN025395@hera.kernel.org>
+
+From: Henrik Rydberg <rydberg@euromail.se>
+
+Commit a66603257bf88bbe2c9fd6a97ee5dc24de15d196 upstream
+
+hwmon: applesmc: add support for Macbook Pro 5
+
+Add accelerometer, backlight and temperature sensor support for the new
+unibody Macbook Pro 5.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/applesmc.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -118,6 +118,10 @@ static const char* temperature_sensors_s
+ /* Set 11: Macbook 5,1 */
+ { "TB0T", "TB1T", "TB2T", "TB3T", "TC0D", "TC0P", "TN0D", "TN0P",
+ "TTF0", "Th0H", "Th1H", "ThFH", "Ts0P", "Ts0S", NULL },
++/* Set 12: Macbook Pro 5,1 */
++ { "TB0T", "TB1T", "TB2T", "TB3T", "TC0D", "TC0F", "TC0P", "TG0D",
++ "TG0F", "TG0H", "TG0P", "TG0T", "TG1H", "TN0D", "TN0P", "TTF0",
++ "Th2H", "Tm0P", "Ts0P", "Ts0S", NULL },
+ };
+
+ /* List of keys used to read/write fan speeds */
+@@ -1257,6 +1261,8 @@ static __initdata struct dmi_match_data
+ { .accelerometer = 0, .light = 0, .temperature_set = 10 },
+ /* MacBook 5: accelerometer, backlight and temperature set 11 */
+ { .accelerometer = 1, .light = 1, .temperature_set = 11 },
++/* MacBook Pro 5: accelerometer, backlight and temperature set 12 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 12 },
+ };
+
+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
+@@ -1266,6 +1272,10 @@ static __initdata struct dmi_system_id a
+ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir") },
+ (void*)&applesmc_dmi_data[7]},
++ { applesmc_dmi_match, "Apple MacBook Pro 5", {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5") },
++ &applesmc_dmi_data[12]},
+ { applesmc_dmi_match, "Apple MacBook Pro 4", {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro4") },
--- /dev/null
+From jejb@kernel.org Tue Nov 11 10:17:05 2008
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Date: Tue, 11 Nov 2008 17:50:05 GMT
+Subject: I/OAT: fix async_tx.callback checking
+To: jejb@kernel.org, stable@kernel.org
+Message-ID: <200811111750.mABHo5Ai025612@hera.kernel.org>
+
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+
+commit 12ccea24e309d815d058cdc6ee8bf2c4b85f0c5f upstream
+
+async_tx.callback should be checked for the first
+not the last descriptor in the chain.
+
+Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/dma/ioat_dma.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/dma/ioat_dma.c
++++ b/drivers/dma/ioat_dma.c
+@@ -519,7 +519,7 @@ static dma_cookie_t ioat1_tx_submit(stru
+ }
+
+ hw->ctl = IOAT_DMA_DESCRIPTOR_CTL_CP_STS;
+- if (new->async_tx.callback) {
++ if (first->async_tx.callback) {
+ hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN;
+ if (first != new) {
+ /* move callback into to last desc */
+@@ -611,7 +611,7 @@ static dma_cookie_t ioat2_tx_submit(stru
+ }
+
+ hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_CP_STS;
+- if (new->async_tx.callback) {
++ if (first->async_tx.callback) {
+ hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN;
+ if (first != new) {
+ /* move callback into to last desc */
--- /dev/null
+From jejb@kernel.org Tue Nov 11 10:15:37 2008
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Date: Tue, 11 Nov 2008 17:50:09 GMT
+Subject: I/OAT: fix channel resources free for not allocated channels
+To: stable@kernel.org
+Message-ID: <200811111750.mABHo9IU025655@hera.kernel.org>
+
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+
+commit c3d4f44f50b65b0b0290e357f8739cfb3f4bcaca upstream
+
+If the ioatdma driver is loaded but not used it does not allocate descriptors.
+Before it frees channel resources it should first be sure
+that they have been previously allocated.
+
+Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Tested-by: Tom Picard <tom.s.picard@intel.com>
+Signed-off-by: Dan Williams <dan.j.williams@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/dma/ioat_dma.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/dma/ioat_dma.c
++++ b/drivers/dma/ioat_dma.c
+@@ -801,6 +801,12 @@ static void ioat_dma_free_chan_resources
+ struct ioat_desc_sw *desc, *_desc;
+ int in_use_descs = 0;
+
++ /* Before freeing channel resources first check
++ * if they have been previously allocated for this channel.
++ */
++ if (ioat_chan->desccount == 0)
++ return;
++
+ tasklet_disable(&ioat_chan->cleanup_task);
+ ioat_dma_memcpy_cleanup(ioat_chan);
+
+@@ -863,6 +869,7 @@ static void ioat_dma_free_chan_resources
+ ioat_chan->last_completion = ioat_chan->completion_addr = 0;
+ ioat_chan->pending = 0;
+ ioat_chan->dmacount = 0;
++ ioat_chan->desccount = 0;
+ ioat_chan->watchdog_completion = 0;
+ ioat_chan->last_compl_desc_addr_hw = 0;
+ ioat_chan->watchdog_tcp_cookie =
--- /dev/null
+From jejb@kernel.org Tue Nov 11 10:16:31 2008
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Date: Tue, 11 Nov 2008 17:50:07 GMT
+Subject: I/OAT: fix dma_pin_iovec_pages() error handling
+To: stable@kernel.org
+Message-ID: <200811111750.mABHo7v5025633@hera.kernel.org>
+
+From: Maciej Sosnowski <maciej.sosnowski@intel.com>
+
+commit c2c0b4c5434c0a25f7f7796b29155d53805909f5 upstream
+
+Error handling needs to be modified in dma_pin_iovec_pages().
+It should return NULL instead of ERR_PTR
+(pinned_list is checked for NULL in tcp_recvmsg() to determine
+if iovec pages have been successfully pinned down).
+In case of error for the first iovec,
+local_list->nr_iovecs needs to be initialized.
+
+Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/dma/iovlock.c | 17 ++++++-----------
+ 1 file changed, 6 insertions(+), 11 deletions(-)
+
+--- a/drivers/dma/iovlock.c
++++ b/drivers/dma/iovlock.c
+@@ -55,7 +55,6 @@ struct dma_pinned_list *dma_pin_iovec_pa
+ int nr_iovecs = 0;
+ int iovec_len_used = 0;
+ int iovec_pages_used = 0;
+- long err;
+
+ /* don't pin down non-user-based iovecs */
+ if (segment_eq(get_fs(), KERNEL_DS))
+@@ -72,23 +71,21 @@ struct dma_pinned_list *dma_pin_iovec_pa
+ local_list = kmalloc(sizeof(*local_list)
+ + (nr_iovecs * sizeof (struct dma_page_list))
+ + (iovec_pages_used * sizeof (struct page*)), GFP_KERNEL);
+- if (!local_list) {
+- err = -ENOMEM;
++ if (!local_list)
+ goto out;
+- }
+
+ /* list of pages starts right after the page list array */
+ pages = (struct page **) &local_list->page_list[nr_iovecs];
+
++ local_list->nr_iovecs = 0;
++
+ for (i = 0; i < nr_iovecs; i++) {
+ struct dma_page_list *page_list = &local_list->page_list[i];
+
+ len -= iov[i].iov_len;
+
+- if (!access_ok(VERIFY_WRITE, iov[i].iov_base, iov[i].iov_len)) {
+- err = -EFAULT;
++ if (!access_ok(VERIFY_WRITE, iov[i].iov_base, iov[i].iov_len))
+ goto unpin;
+- }
+
+ page_list->nr_pages = num_pages_spanned(&iov[i]);
+ page_list->base_address = iov[i].iov_base;
+@@ -109,10 +106,8 @@ struct dma_pinned_list *dma_pin_iovec_pa
+ NULL);
+ up_read(¤t->mm->mmap_sem);
+
+- if (ret != page_list->nr_pages) {
+- err = -ENOMEM;
++ if (ret != page_list->nr_pages)
+ goto unpin;
+- }
+
+ local_list->nr_iovecs = i + 1;
+ }
+@@ -122,7 +117,7 @@ struct dma_pinned_list *dma_pin_iovec_pa
+ unpin:
+ dma_unpin_iovec_pages(local_list);
+ out:
+- return ERR_PTR(err);
++ return NULL;
+ }
+
+ void dma_unpin_iovec_pages(struct dma_pinned_list *pinned_list)
r8169-get-ethtool-settings-through-the-generic-mii-helper.patch
r8169-fix-rxmissed-register-access.patch
r8169-wake-up-the-phy-of-the-8168.patch
+i-oat-fix-channel-resources-free-for-not-allocated-channels.patch
+i-oat-fix-dma_pin_iovec_pages-error-handling.patch
+i-oat-fix-async_tx.callback-checking.patch
+dca-fixup-initialization-dependency.patch
+hwmon-applesmc-add-support-for-macbook-air.patch
+hwmon-applesmc-add-support-for-macbook-pro-4.patch
+hwmon-applesmc-add-support-for-macbook-pro-3.patch
+hwmon-applesmc-add-support-for-imac-5.patch
+hwmon-applesmc-add-support-for-macbook-5.patch
+hwmon-applesmc-add-support-for-macbook-pro-5.patch
+hwmon-applesmc-add-support-for-imac-8.patch