diff options
Diffstat (limited to '3.11.1/1000_linux-3.11.1.patch')
-rw-r--r-- | 3.11.1/1000_linux-3.11.1.patch | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/3.11.1/1000_linux-3.11.1.patch b/3.11.1/1000_linux-3.11.1.patch new file mode 100644 index 0000000..553a9f4 --- /dev/null +++ b/3.11.1/1000_linux-3.11.1.patch @@ -0,0 +1,401 @@ +diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp +index 90956b6..4dfdc8f 100644 +--- a/Documentation/hwmon/k10temp ++++ b/Documentation/hwmon/k10temp +@@ -12,6 +12,7 @@ Supported chips: + * AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series) + * AMD Family 14h processors: "Brazos" (C/E/G/Z-Series) + * AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity" ++* AMD Family 16h processors: "Kabini" + + Prefix: 'k10temp' + Addresses scanned: PCI space +diff --git a/Makefile b/Makefile +index fe8204b..efd2396 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + VERSION = 3 + PATCHLEVEL = 11 +-SUBLEVEL = 0 ++SUBLEVEL = 1 + EXTRAVERSION = + NAME = Linux for Workgroups + +diff --git a/arch/x86/include/asm/xor_avx.h b/arch/x86/include/asm/xor_avx.h +index 7ea79c5..492b298 100644 +--- a/arch/x86/include/asm/xor_avx.h ++++ b/arch/x86/include/asm/xor_avx.h +@@ -167,12 +167,12 @@ static struct xor_block_template xor_block_avx = { + + #define AVX_XOR_SPEED \ + do { \ +- if (cpu_has_avx) \ ++ if (cpu_has_avx && cpu_has_osxsave) \ + xor_speed(&xor_block_avx); \ + } while (0) + + #define AVX_SELECT(FASTEST) \ +- (cpu_has_avx ? &xor_block_avx : FASTEST) ++ (cpu_has_avx && cpu_has_osxsave ? &xor_block_avx : FASTEST) + + #else + +diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c +index 80403c1..45af90a 100644 +--- a/drivers/acpi/ec.c ++++ b/drivers/acpi/ec.c +@@ -987,6 +987,10 @@ static struct dmi_system_id __initdata ec_dmi_table[] = { + ec_skip_dsdt_scan, "HP Folio 13", { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13"),}, NULL}, ++ { ++ ec_validate_ecdt, "ASUS hardware", { ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTek Computer Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),}, NULL}, + {}, + }; + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 0df7590..461f47b 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -262,6 +262,13 @@ static void vmbus_process_offer(struct work_struct *work) + } + + /* ++ * This state is used to indicate a successful open ++ * so that when we do close the channel normally, we ++ * can cleanup properly ++ */ ++ newchannel->state = CHANNEL_OPEN_STATE; ++ ++ /* + * Start the process of binding this offer to the driver + * We need to set the DeviceObject field before calling + * vmbus_child_dev_add() +@@ -287,13 +294,6 @@ static void vmbus_process_offer(struct work_struct *work) + kfree(newchannel->device_obj); + + free_channel(newchannel); +- } else { +- /* +- * This state is used to indicate a successful open +- * so that when we do close the channel normally, we +- * can cleanup properly +- */ +- newchannel->state = CHANNEL_OPEN_STATE; + } + } + +diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig +index e989f7f..1e27838 100644 +--- a/drivers/hwmon/Kconfig ++++ b/drivers/hwmon/Kconfig +@@ -296,8 +296,8 @@ config SENSORS_K10TEMP + If you say yes here you get support for the temperature + sensor(s) inside your CPU. Supported are later revisions of + the AMD Family 10h and all revisions of the AMD Family 11h, +- 12h (Llano), 14h (Brazos) and 15h (Bulldozer/Trinity) +- microarchitectures. ++ 12h (Llano), 14h (Brazos), 15h (Bulldozer/Trinity) and ++ 16h (Kabini) microarchitectures. + + This driver can also be built as a module. If so, the module + will be called k10temp. +diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c +index e3b037c..e633856 100644 +--- a/drivers/hwmon/k10temp.c ++++ b/drivers/hwmon/k10temp.c +@@ -1,5 +1,5 @@ + /* +- * k10temp.c - AMD Family 10h/11h/12h/14h/15h processor hardware monitoring ++ * k10temp.c - AMD Family 10h/11h/12h/14h/15h/16h processor hardware monitoring + * + * Copyright (c) 2009 Clemens Ladisch <clemens@ladisch.de> + * +@@ -211,6 +211,7 @@ static DEFINE_PCI_DEVICE_TABLE(k10temp_id_table) = { + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CNB17H_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) }, ++ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) }, + {} + }; + MODULE_DEVICE_TABLE(pci, k10temp_id_table); +diff --git a/drivers/misc/hpilo.c b/drivers/misc/hpilo.c +index 621c7a3..b83e3ca 100644 +--- a/drivers/misc/hpilo.c ++++ b/drivers/misc/hpilo.c +@@ -759,7 +759,7 @@ static int ilo_probe(struct pci_dev *pdev, + + /* Ignore subsystem_device = 0x1979 (set by BIOS) */ + if (pdev->subsystem_device == 0x1979) +- goto out; ++ return 0; + + if (max_ccb > MAX_CCB) + max_ccb = MAX_CCB; +@@ -899,7 +899,7 @@ static void __exit ilo_exit(void) + class_destroy(ilo_class); + } + +-MODULE_VERSION("1.4"); ++MODULE_VERSION("1.4.1"); + MODULE_ALIAS(ILO_NAME); + MODULE_DESCRIPTION(ILO_NAME); + MODULE_AUTHOR("David Altobelli <david.altobelli@hp.com>"); +diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c +index b22c7e2..3412adc 100644 +--- a/drivers/misc/mei/hw-me.c ++++ b/drivers/misc/mei/hw-me.c +@@ -176,21 +176,18 @@ static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable) + struct mei_me_hw *hw = to_me_hw(dev); + u32 hcsr = mei_hcsr_read(hw); + +- dev_dbg(&dev->pdev->dev, "before reset HCSR = 0x%08x.\n", hcsr); +- +- hcsr |= (H_RST | H_IG); ++ hcsr |= H_RST | H_IG | H_IS; + + if (intr_enable) + hcsr |= H_IE; + else +- hcsr |= ~H_IE; ++ hcsr &= ~H_IE; + +- mei_hcsr_set(hw, hcsr); ++ mei_me_reg_write(hw, H_CSR, hcsr); + + if (dev->dev_state == MEI_DEV_POWER_DOWN) + mei_me_hw_reset_release(dev); + +- dev_dbg(&dev->pdev->dev, "current HCSR = 0x%08x.\n", mei_hcsr_read(hw)); + return 0; + } + +diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c +index 1753431..108267d 100644 +--- a/drivers/net/wireless/mwifiex/main.c ++++ b/drivers/net/wireless/mwifiex/main.c +@@ -458,20 +458,6 @@ static void mwifiex_fw_dpc(const struct firmware *firmware, void *context) + dev_err(adapter->dev, "cannot create default STA interface\n"); + goto err_add_intf; + } +- +- /* Create AP interface by default */ +- if (!mwifiex_add_virtual_intf(adapter->wiphy, "uap%d", +- NL80211_IFTYPE_AP, NULL, NULL)) { +- dev_err(adapter->dev, "cannot create default AP interface\n"); +- goto err_add_intf; +- } +- +- /* Create P2P interface by default */ +- if (!mwifiex_add_virtual_intf(adapter->wiphy, "p2p%d", +- NL80211_IFTYPE_P2P_CLIENT, NULL, NULL)) { +- dev_err(adapter->dev, "cannot create default P2P interface\n"); +- goto err_add_intf; +- } + rtnl_unlock(); + + mwifiex_drv_get_driver_version(adapter, fmt, sizeof(fmt) - 1); +diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c +index 9915cb9..9efe118 100644 +--- a/drivers/rtc/rtc-max77686.c ++++ b/drivers/rtc/rtc-max77686.c +@@ -240,9 +240,9 @@ static int max77686_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) + } + + alrm->pending = 0; +- ret = regmap_read(info->max77686->regmap, MAX77686_REG_STATUS1, &val); ++ ret = regmap_read(info->max77686->regmap, MAX77686_REG_STATUS2, &val); + if (ret < 0) { +- dev_err(info->dev, "%s:%d fail to read status1 reg(%d)\n", ++ dev_err(info->dev, "%s:%d fail to read status2 reg(%d)\n", + __func__, __LINE__, ret); + goto out; + } +diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c +index 9854a1d..6bc205b 100644 +--- a/drivers/staging/imx-drm/imx-drm-core.c ++++ b/drivers/staging/imx-drm/imx-drm-core.c +@@ -678,6 +678,7 @@ found: + + return i; + } ++EXPORT_SYMBOL_GPL(imx_drm_encoder_get_mux_id); + + /* + * imx_drm_remove_encoder - remove an encoder +diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c +index f73da43..3a17930 100644 +--- a/drivers/target/iscsi/iscsi_target.c ++++ b/drivers/target/iscsi/iscsi_target.c +@@ -1086,7 +1086,6 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, + if (cmd->reject_reason) + return 0; + +- target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd); + return 1; + } + /* +@@ -1124,14 +1123,10 @@ after_immediate_data: + */ + cmdsn_ret = iscsit_sequence_cmd(cmd->conn, cmd, + (unsigned char *)hdr, hdr->cmdsn); +- if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER) { ++ if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER) + return -1; +- } else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP) { +- target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd); +- return 0; +- } + +- if (cmd->sense_reason) { ++ if (cmd->sense_reason || cmdsn_ret == CMDSN_LOWER_THAN_EXP) { + int rc; + + rc = iscsit_dump_data_payload(cmd->conn, +@@ -1527,6 +1522,10 @@ int iscsit_setup_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd, + if (hdr->itt == RESERVED_ITT && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) { + pr_err("NOPOUT ITT is reserved, but Immediate Bit is" + " not set, protocol error.\n"); ++ if (!cmd) ++ return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR, ++ (unsigned char *)hdr); ++ + return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, + (unsigned char *)hdr); + } +@@ -1536,6 +1535,10 @@ int iscsit_setup_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd, + " greater than MaxXmitDataSegmentLength: %u, protocol" + " error.\n", payload_length, + conn->conn_ops->MaxXmitDataSegmentLength); ++ if (!cmd) ++ return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR, ++ (unsigned char *)hdr); ++ + return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, + (unsigned char *)hdr); + } +diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c +index 3402241..bc788c5 100644 +--- a/drivers/target/iscsi/iscsi_target_login.c ++++ b/drivers/target/iscsi/iscsi_target_login.c +@@ -1163,12 +1163,11 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) + if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { + spin_unlock_bh(&np->np_thread_lock); + complete(&np->np_restart_comp); +- if (ret == -ENODEV) { +- iscsit_put_transport(conn->conn_transport); +- kfree(conn); +- conn = NULL; ++ iscsit_put_transport(conn->conn_transport); ++ kfree(conn); ++ conn = NULL; ++ if (ret == -ENODEV) + goto out; +- } + /* Get another socket */ + return 1; + } +diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c +index 4cb667d..9fabbf7 100644 +--- a/drivers/target/target_core_spc.c ++++ b/drivers/target/target_core_spc.c +@@ -97,9 +97,12 @@ spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf) + + buf[7] = 0x2; /* CmdQue=1 */ + +- snprintf(&buf[8], 8, "LIO-ORG"); +- snprintf(&buf[16], 16, "%s", dev->t10_wwn.model); +- snprintf(&buf[32], 4, "%s", dev->t10_wwn.revision); ++ memcpy(&buf[8], "LIO-ORG ", 8); ++ memset(&buf[16], 0x20, 16); ++ memcpy(&buf[16], dev->t10_wwn.model, ++ min_t(size_t, strlen(dev->t10_wwn.model), 16)); ++ memcpy(&buf[32], dev->t10_wwn.revision, ++ min_t(size_t, strlen(dev->t10_wwn.revision), 4)); + buf[4] = 31; /* Set additional length to 31 */ + + return 0; +diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c +index 7172d00..d8e49d7 100644 +--- a/drivers/target/target_core_transport.c ++++ b/drivers/target/target_core_transport.c +@@ -2134,6 +2134,7 @@ static void transport_write_pending_qf(struct se_cmd *cmd) + + int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks) + { ++ unsigned long flags; + int ret = 0; + + if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) { +@@ -2144,6 +2145,16 @@ int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks) + } else { + if (wait_for_tasks) + transport_wait_for_tasks(cmd); ++ /* ++ * Handle WRITE failure case where transport_generic_new_cmd() ++ * has already added se_cmd to state_list, but fabric has ++ * failed command before I/O submission. ++ */ ++ if (cmd->state_active) { ++ spin_lock_irqsave(&cmd->t_state_lock, flags); ++ target_remove_from_state_list(cmd); ++ spin_unlock_irqrestore(&cmd->t_state_lock, flags); ++ } + + if (cmd->se_lun) + transport_lun_remove_cmd(cmd); +diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c +index 4b7e33e..ab1065a 100644 +--- a/drivers/usb/gadget/f_acm.c ++++ b/drivers/usb/gadget/f_acm.c +@@ -285,6 +285,7 @@ static struct usb_string acm_string_defs[] = { + [ACM_CTRL_IDX].s = "CDC Abstract Control Model (ACM)", + [ACM_DATA_IDX].s = "CDC ACM Data", + [ACM_IAD_IDX ].s = "CDC Serial", ++ { } /* end of list */ + }; + + static struct usb_gadget_strings acm_string_table = { +diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig +index aa43854..805b83e 100644 +--- a/sound/soc/fsl/Kconfig ++++ b/sound/soc/fsl/Kconfig +@@ -109,11 +109,11 @@ config SND_SOC_IMX_SSI + tristate + + config SND_SOC_IMX_PCM_FIQ +- bool ++ tristate + select FIQ + + config SND_SOC_IMX_PCM_DMA +- bool ++ tristate + select SND_SOC_GENERIC_DMAENGINE_PCM + + config SND_SOC_IMX_AUDMUX +diff --git a/sound/soc/fsl/imx-pcm.h b/sound/soc/fsl/imx-pcm.h +index 67f656c..0e3619e 100644 +--- a/sound/soc/fsl/imx-pcm.h ++++ b/sound/soc/fsl/imx-pcm.h +@@ -32,7 +32,7 @@ imx_pcm_dma_params_init_data(struct imx_dma_data *dma_data, + dma_data->peripheral_type = IMX_DMATYPE_SSI; + } + +-#ifdef CONFIG_SND_SOC_IMX_PCM_DMA ++#if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA) + int imx_pcm_dma_init(struct platform_device *pdev); + void imx_pcm_dma_exit(struct platform_device *pdev); + #else +@@ -46,7 +46,7 @@ static inline void imx_pcm_dma_exit(struct platform_device *pdev) + } + #endif + +-#ifdef CONFIG_SND_SOC_IMX_PCM_FIQ ++#if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ) + int imx_pcm_fiq_init(struct platform_device *pdev); + void imx_pcm_fiq_exit(struct platform_device *pdev); + #else |