Re: Linux 3.4.28
diff --git a/Makefile b/Makefile index f139ce7..8ccebba 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 4 -SUBLEVEL = 27 +SUBLEVEL = 28 EXTRAVERSION = NAME = Saber-toothed Squirrel diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index f3decb3..6cba428 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -1018,6 +1018,9 @@ static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr) return -EINVAL; } + if (!dev) + return -EINVAL; + dev->cpu = pr->id; if (max_cstate == 0) @@ -1205,6 +1208,7 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr) } /* Populate Updated C-state information */ + acpi_processor_get_power_info(pr); acpi_processor_setup_cpuidle_states(pr); /* Enable all cpuidle devices */ diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 93cbc44..71a4d04 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -53,6 +53,7 @@ enum { AHCI_PCI_BAR_STA2X11= 0, + AHCI_PCI_BAR_ENMOTUS= 2, AHCI_PCI_BAR_STANDARD = 5, }; @@ -405,7 +406,13 @@ static const struct pci_device_id ahci_pci_tbl[] = { { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ /* Asmedia */ - { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + + /* Enmotus */ + { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, /* Generic, PCI class code for AHCI */ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -1079,9 +1086,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev_info(>dev, "PDC42819 can only drive SATA devices with this driver\n"); - /* The Connext uses non-standard BAR */ + /* Both Connext and Enmotus devices use non-standard BARs */ if (pdev->vendor == PCI_VENDOR_ID_STMICRO && pdev->device == 0xCC06) ahci_pci_bar = AHCI_PCI_BAR_STA2X11; + else if (pdev->vendor == 0x1c44 && pdev->device == 0x8000) + ahci_pci_bar = AHCI_PCI_BAR_ENMOTUS; /* acquire resources */ rc = pcim_enable_device(pdev); diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c index f7f1dc6..ed0e8b7 100644 --- a/drivers/dma/ioat/dma_v3.c +++ b/drivers/dma/ioat/dma_v3.c @@ -951,7 +951,7 @@ static int __devinit ioat_xor_val_self_test(struct ioatdma_device *device) goto free_resources; } } - dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_TO_DEVICE); + dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE); /* skip validate if the capability is not present */ if (!dma_has_cap(DMA_XOR_VAL, dma_chan->device->cap_mask)) diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index b298158..fd3ae62 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -16,6 +16,7 @@ */ static char dmi_empty_string[] = ""; +static u16 __initdata dmi_ver; /* * Catch too early calls to dmi_check_system(): */ @@ -118,12 +119,12 @@ static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, return 0; } -static int __init dmi_checksum(const u8 *buf) +static int __init dmi_checksum(const u8 *buf, u8 len) { u8 sum = 0; int a; - for (a = 0; a < 15; a++) + for (a = 0; a < len; a++) sum += buf[a]; return sum == 0; @@ -161,8 +162,10 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde return; for (i = 0; i < 16 && (is_ff || is_00); i++) { - if(d[i] != 0x00) is_ff = 0; - if(d[i] != 0xFF) is_00 = 0; + if (d[i] != 0x00) + is_00 = 0; + if (d[i] != 0xFF) + is_ff = 0; } if (is_ff || is_00) @@ -172,7 +175,15 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde if (!s) return; - sprintf(s, "%pUB", d); + /* +* As of version 2.6 of the SMBIOS specification, the first 3 fields of +* the UUID are supposed to be little-endian encoded. The specification +* says that this is the defacto standard. +*/ + if (dmi_ver >= 0x0206) + sprintf(s, "%pUL", d); + else + sprintf(s, "%pUB", d); dmi_ident[slot] = s; } @@ -404,29 +415,57 @@ static int
Linux 3.4.28
I'm announcing the release of the 3.4.28 kernel. All users of the 3.4 kernel series must upgrade. The updated 3.4.y git tree can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.4.y and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary thanks, greg k-h Makefile |2 drivers/acpi/processor_idle.c |4 + drivers/ata/ahci.c | 13 drivers/dma/ioat/dma_v3.c |2 drivers/firmware/dmi_scan.c| 78 ++--- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 21 +++ drivers/gpu/drm/i915/i915_reg.h|3 + drivers/gpu/drm/i915/intel_display.c |4 + drivers/pci/hotplug/pciehp.h |2 drivers/pci/hotplug/pciehp_core.c | 11 drivers/pci/hotplug/pciehp_ctrl.c |8 +- drivers/pci/hotplug/pciehp_hpc.c | 11 +++- drivers/pci/hotplug/shpchp.h |1 drivers/pci/hotplug/shpchp_core.c | 10 --- drivers/pci/hotplug/shpchp_ctrl.c |2 drivers/pci/pcie/aer/aerdrv_core.c |1 drivers/pci/pcie/aspm.c|3 + drivers/scsi/sd.c | 13 ++-- drivers/usb/dwc3/gadget.c |1 drivers/usb/host/uhci-hcd.c| 15 +++-- include/linux/sched.h | 11 +++- kernel/ptrace.c| 72 +- kernel/sched/core.c|3 - kernel/signal.c| 19 +++ kernel/trace/ftrace.c |2 security/integrity/evm/evm_crypto.c|4 - sound/usb/endpoint.c |6 -- 27 files changed, 230 insertions(+), 92 deletions(-) Alan Cox (1): ahci: Add identifiers for ASM106x devices Alan Stern (1): USB: UHCI: fix IRQ race during initialization Betty Dall (1): PCI/AER: pci_get_domain_bus_and_slot() call missing required pci_dev_put() Bjorn Helgaas (1): PCI: shpchp: Handle push button event asynchronously Chris Wilson (1): drm/i915: Invalidate the relocation presumed_offsets along the slow path Colin Ian King (1): PCI: Allow pcie_aspm=force even when FADT indicates it is unsupported Daniel Vetter (1): drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled Dmitry Kasatkin (1): evm: checking if removexattr is not a NULL Greg Kroah-Hartman (1): Linux 3.4.28 Hugh Daschbach (1): libata: ahci: Add support for Enmotus Bobcat device. Joel D. Diaz (1): SCSI: sd: Reshuffle init_sd to avoid crash Konrad Rzeszutek Wilk (1): ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled Oleg Nesterov (3): ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED task Pratyush Anand (1): usb: dwc3: gadget: fix ep->maxburst for ep0 Shuah Khan (1): ioat: Fix DMA memory sync direction correct flag Steven Rostedt (1): ftrace: Be first to run code modification on modules Takashi Iwai (1): ALSA: usb-audio: Fix regression by disconnection-race-fix patch Thomas Schlichter (1): ACPI / processor: Get power info before updating the C-states Yijing Wang (1): PCI: pciehp: Use per-slot workqueues to avoid deadlock Zhenzhong Duan (2): drivers/firmware/dmi_scan.c: check dmi version when get system uuid drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists pgp9ubvDp801g.pgp Description: PGP signature
Linux 3.4.28
I'm announcing the release of the 3.4.28 kernel. All users of the 3.4 kernel series must upgrade. The updated 3.4.y git tree can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.4.y and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary thanks, greg k-h Makefile |2 drivers/acpi/processor_idle.c |4 + drivers/ata/ahci.c | 13 drivers/dma/ioat/dma_v3.c |2 drivers/firmware/dmi_scan.c| 78 ++--- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 21 +++ drivers/gpu/drm/i915/i915_reg.h|3 + drivers/gpu/drm/i915/intel_display.c |4 + drivers/pci/hotplug/pciehp.h |2 drivers/pci/hotplug/pciehp_core.c | 11 drivers/pci/hotplug/pciehp_ctrl.c |8 +- drivers/pci/hotplug/pciehp_hpc.c | 11 +++- drivers/pci/hotplug/shpchp.h |1 drivers/pci/hotplug/shpchp_core.c | 10 --- drivers/pci/hotplug/shpchp_ctrl.c |2 drivers/pci/pcie/aer/aerdrv_core.c |1 drivers/pci/pcie/aspm.c|3 + drivers/scsi/sd.c | 13 ++-- drivers/usb/dwc3/gadget.c |1 drivers/usb/host/uhci-hcd.c| 15 +++-- include/linux/sched.h | 11 +++- kernel/ptrace.c| 72 +- kernel/sched/core.c|3 - kernel/signal.c| 19 +++ kernel/trace/ftrace.c |2 security/integrity/evm/evm_crypto.c|4 - sound/usb/endpoint.c |6 -- 27 files changed, 230 insertions(+), 92 deletions(-) Alan Cox (1): ahci: Add identifiers for ASM106x devices Alan Stern (1): USB: UHCI: fix IRQ race during initialization Betty Dall (1): PCI/AER: pci_get_domain_bus_and_slot() call missing required pci_dev_put() Bjorn Helgaas (1): PCI: shpchp: Handle push button event asynchronously Chris Wilson (1): drm/i915: Invalidate the relocation presumed_offsets along the slow path Colin Ian King (1): PCI: Allow pcie_aspm=force even when FADT indicates it is unsupported Daniel Vetter (1): drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled Dmitry Kasatkin (1): evm: checking if removexattr is not a NULL Greg Kroah-Hartman (1): Linux 3.4.28 Hugh Daschbach (1): libata: ahci: Add support for Enmotus Bobcat device. Joel D. Diaz (1): SCSI: sd: Reshuffle init_sd to avoid crash Konrad Rzeszutek Wilk (1): ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled Oleg Nesterov (3): ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED task Pratyush Anand (1): usb: dwc3: gadget: fix ep-maxburst for ep0 Shuah Khan (1): ioat: Fix DMA memory sync direction correct flag Steven Rostedt (1): ftrace: Be first to run code modification on modules Takashi Iwai (1): ALSA: usb-audio: Fix regression by disconnection-race-fix patch Thomas Schlichter (1): ACPI / processor: Get power info before updating the C-states Yijing Wang (1): PCI: pciehp: Use per-slot workqueues to avoid deadlock Zhenzhong Duan (2): drivers/firmware/dmi_scan.c: check dmi version when get system uuid drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists pgp9ubvDp801g.pgp Description: PGP signature
Re: Linux 3.4.28
diff --git a/Makefile b/Makefile index f139ce7..8ccebba 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 4 -SUBLEVEL = 27 +SUBLEVEL = 28 EXTRAVERSION = NAME = Saber-toothed Squirrel diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index f3decb3..6cba428 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -1018,6 +1018,9 @@ static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr) return -EINVAL; } + if (!dev) + return -EINVAL; + dev-cpu = pr-id; if (max_cstate == 0) @@ -1205,6 +1208,7 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr) } /* Populate Updated C-state information */ + acpi_processor_get_power_info(pr); acpi_processor_setup_cpuidle_states(pr); /* Enable all cpuidle devices */ diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 93cbc44..71a4d04 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -53,6 +53,7 @@ enum { AHCI_PCI_BAR_STA2X11= 0, + AHCI_PCI_BAR_ENMOTUS= 2, AHCI_PCI_BAR_STANDARD = 5, }; @@ -405,7 +406,13 @@ static const struct pci_device_id ahci_pci_tbl[] = { { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ /* Asmedia */ - { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + + /* Enmotus */ + { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, /* Generic, PCI class code for AHCI */ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -1079,9 +1086,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev_info(pdev-dev, PDC42819 can only drive SATA devices with this driver\n); - /* The Connext uses non-standard BAR */ + /* Both Connext and Enmotus devices use non-standard BARs */ if (pdev-vendor == PCI_VENDOR_ID_STMICRO pdev-device == 0xCC06) ahci_pci_bar = AHCI_PCI_BAR_STA2X11; + else if (pdev-vendor == 0x1c44 pdev-device == 0x8000) + ahci_pci_bar = AHCI_PCI_BAR_ENMOTUS; /* acquire resources */ rc = pcim_enable_device(pdev); diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c index f7f1dc6..ed0e8b7 100644 --- a/drivers/dma/ioat/dma_v3.c +++ b/drivers/dma/ioat/dma_v3.c @@ -951,7 +951,7 @@ static int __devinit ioat_xor_val_self_test(struct ioatdma_device *device) goto free_resources; } } - dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_TO_DEVICE); + dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE); /* skip validate if the capability is not present */ if (!dma_has_cap(DMA_XOR_VAL, dma_chan-device-cap_mask)) diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index b298158..fd3ae62 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -16,6 +16,7 @@ */ static char dmi_empty_string[] = ; +static u16 __initdata dmi_ver; /* * Catch too early calls to dmi_check_system(): */ @@ -118,12 +119,12 @@ static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, return 0; } -static int __init dmi_checksum(const u8 *buf) +static int __init dmi_checksum(const u8 *buf, u8 len) { u8 sum = 0; int a; - for (a = 0; a 15; a++) + for (a = 0; a len; a++) sum += buf[a]; return sum == 0; @@ -161,8 +162,10 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde return; for (i = 0; i 16 (is_ff || is_00); i++) { - if(d[i] != 0x00) is_ff = 0; - if(d[i] != 0xFF) is_00 = 0; + if (d[i] != 0x00) + is_00 = 0; + if (d[i] != 0xFF) + is_ff = 0; } if (is_ff || is_00) @@ -172,7 +175,15 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde if (!s) return; - sprintf(s, %pUB, d); + /* +* As of version 2.6 of the SMBIOS specification, the first 3 fields of +* the UUID are supposed to be little-endian encoded. The specification +* says that this is the defacto standard. +*/ + if (dmi_ver = 0x0206) + sprintf(s, %pUL, d); + else + sprintf(s, %pUB, d); dmi_ident[slot] = s; } @@ -404,29 +415,57 @@ static int __init dmi_present(const char