summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2012-05-04 11:05:58 +0200
committerDenys Dmytriyenko <denys@ti.com>2012-05-10 15:31:55 -0400
commit1af87d9126c541cb890c46bb8fd98b4d8d796bd6 (patch)
tree2eeb3f7f09ca3395b823c3d54c02eba88488bce8
parent649c697bf885f0abc4c7fcc16a05a556e0a02f29 (diff)
downloadmeta-ti-1af87d9126c541cb890c46bb8fd98b4d8d796bd6.tar.gz
linux-ti335x-psp 3.2: update to 3.2.16
3.2.16 is the final release in the 3.2-stable series by Greg KH. Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
-rw-r--r--conf/machine/include/ti33x.inc2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch31
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch132
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch69
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch77
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch75
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch71
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch57
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch180
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch121
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch212
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch266
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch166
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch99
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch102
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch61
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch72
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch74
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch50
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch91
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch100
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch99
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch209
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch76
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch50
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch130
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch107
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch93
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch89
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch107
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-perf-hists-Catch-and-handle-out-of-date-hist-entry-m.patch59
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch118
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-pch_uart-Fix-MSI-setting-issue.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-serial-fix-race-between-probe-and-open.patch97
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch79
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch111
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch30
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch85
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-USB-don-t-ignore-suspend-errors-for-root-hubs.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-don-t-re-enable-IE-constantly.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch78
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch73
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch61
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-fix-tlb-flushing-for-page-table-pages.patch240
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-clear-pending-interrupts.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-serial-PL011-move-interrupt-clearing.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-fcaps-clear-the-same-personality-flags-as-suid-when-.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-ath9k-fix-max-noise-floor-threshold.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-xhci-Fix-register-save-restore-order.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch133
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-disconnect-issue.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-wrong-return-value.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch153
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-security-fix-compile-error-in-commoncap.c.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-fix-Wuninitialized-warning.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch76
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch67
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch119
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch170
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-disable-MSI-on-RV515.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0069-Linux-3.2.16.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp_3.2.bb131
131 files changed, 8773 insertions, 3 deletions
diff --git a/conf/machine/include/ti33x.inc b/conf/machine/include/ti33x.inc
index c5926a80..e04da03b 100644
--- a/conf/machine/include/ti33x.inc
+++ b/conf/machine/include/ti33x.inc
@@ -4,7 +4,7 @@ require conf/machine/include/soc-family.inc
4require conf/machine/include/tune-cortexa8.inc 4require conf/machine/include/tune-cortexa8.inc
5PREFERRED_PROVIDER_virtual/kernel = "linux-ti33x-psp" 5PREFERRED_PROVIDER_virtual/kernel = "linux-ti33x-psp"
6# Increase this everytime you change something in the kernel 6# Increase this everytime you change something in the kernel
7MACHINE_KERNEL_PR = "r10" 7MACHINE_KERNEL_PR = "r11"
8 8
9KERNEL_IMAGETYPE = "uImage" 9KERNEL_IMAGETYPE = "uImage"
10 10
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch
new file mode 100644
index 00000000..6ca5b968
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch
@@ -0,0 +1,36 @@
1From 7e602bd1af2343c068cef31c272ffbb1f24e4569 Mon Sep 17 00:00:00 2001
2From: "zhuangfeiran@ict.ac.cn" <zhuangfeiran@ict.ac.cn>
3Date: Wed, 28 Mar 2012 23:27:00 +0000
4Subject: [PATCH 01/60] x86 bpf_jit: fix a bug in emitting the 16-bit
5 immediate operand of AND
6
7[ Upstream commit 1d24fb3684f347226747c6b11ea426b7b992694e ]
8
9When K >= 0xFFFF0000, AND needs the two least significant bytes of K as
10its operand, but EMIT2() gives it the least significant byte of K and
110x2. EMIT() should be used here to replace EMIT2().
12
13Signed-off-by: Feiran Zhuang <zhuangfeiran@ict.ac.cn>
14Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 arch/x86/net/bpf_jit_comp.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
22index 5671752..5a5b6e4 100644
23--- a/arch/x86/net/bpf_jit_comp.c
24+++ b/arch/x86/net/bpf_jit_comp.c
25@@ -289,7 +289,7 @@ void bpf_jit_compile(struct sk_filter *fp)
26 EMIT2(0x24, K & 0xFF); /* and imm8,%al */
27 } else if (K >= 0xFFFF0000) {
28 EMIT2(0x66, 0x25); /* and imm16,%ax */
29- EMIT2(K, 2);
30+ EMIT(K, 2);
31 } else {
32 EMIT1_off32(0x25, K); /* and imm32,%eax */
33 }
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch
new file mode 100644
index 00000000..1a703dcd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch
@@ -0,0 +1,37 @@
1From 1ac4686cd4465f081e95dc1f6de93bb6f5157a48 Mon Sep 17 00:00:00 2001
2From: Matt Carlson <mcarlson@broadcom.com>
3Date: Mon, 2 Apr 2012 09:01:40 +0000
4Subject: [PATCH 02/60] tg3: Fix 5717 serdes powerdown problem
5
6[ Upstream commit 085f1afc56619bda424941412fdeaff1e32c21dc ]
7
8If port 0 of a 5717 serdes device powers down, it hides the phy from
9port 1. This patch works around the problem by keeping port 0's phy
10powered up.
11
12Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
13Signed-off-by: Michael Chan <mchan@broadcom.com>
14Signed-off-by: David S. Miller <davem@davemloft.net>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/net/ethernet/broadcom/tg3.c | 4 +++-
18 1 file changed, 3 insertions(+), 1 deletion(-)
19
20diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
21index bf40741..3d55883 100644
22--- a/drivers/net/ethernet/broadcom/tg3.c
23+++ b/drivers/net/ethernet/broadcom/tg3.c
24@@ -2794,7 +2794,9 @@ static void tg3_power_down_phy(struct tg3 *tp, bool do_low_power)
25 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
26 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 ||
27 (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5780 &&
28- (tp->phy_flags & TG3_PHYFLG_MII_SERDES)))
29+ (tp->phy_flags & TG3_PHYFLG_MII_SERDES)) ||
30+ (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 &&
31+ !tp->pci_fn))
32 return;
33
34 if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5784_AX ||
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch
new file mode 100644
index 00000000..38890ecb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch
@@ -0,0 +1,42 @@
1From 52136862cecf42801481b683e0c316e9bc7658ee Mon Sep 17 00:00:00 2001
2From: Lino Sanfilippo <LinoSanfilippo@gmx.de>
3Date: Fri, 30 Mar 2012 07:28:59 +0000
4Subject: [PATCH 03/60] sky2: dont overwrite settings for PHY Quick link
5
6[ Upstream commit 2240eb4ae3dc4acff20d1a8947c441c451513e37 ]
7
8This patch corrects a bug in function sky2_open() of the Marvell Yukon 2 driver
9in which the settings for PHY quick link are overwritten.
10
11Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
12Acked-by: Stephen Hemminger <shemminger@vyattta.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/net/ethernet/marvell/sky2.c | 5 +++--
17 1 file changed, 3 insertions(+), 2 deletions(-)
18
19diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
20index f612b35..7eb8a00 100644
21--- a/drivers/net/ethernet/marvell/sky2.c
22+++ b/drivers/net/ethernet/marvell/sky2.c
23@@ -1766,13 +1766,14 @@ static int sky2_open(struct net_device *dev)
24
25 sky2_hw_up(sky2);
26
27+ /* Enable interrupts from phy/mac for port */
28+ imask = sky2_read32(hw, B0_IMSK);
29+
30 if (hw->chip_id == CHIP_ID_YUKON_OPT ||
31 hw->chip_id == CHIP_ID_YUKON_PRM ||
32 hw->chip_id == CHIP_ID_YUKON_OP_2)
33 imask |= Y2_IS_PHY_QLNK; /* enable PHY Quick Link */
34
35- /* Enable interrupts from phy/mac for port */
36- imask = sky2_read32(hw, B0_IMSK);
37 imask |= portirq_msk[port];
38 sky2_write32(hw, B0_IMSK, imask);
39 sky2_read32(hw, B0_IMSK);
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch
new file mode 100644
index 00000000..6e7fb2e4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch
@@ -0,0 +1,41 @@
1From 1ea3a4959cbe6145d661bd86ad83f70a61927974 Mon Sep 17 00:00:00 2001
2From: "danborkmann@iogearbox.net" <danborkmann@iogearbox.net>
3Date: Tue, 27 Mar 2012 22:47:43 +0000
4Subject: [PATCH 04/60] rose_dev: fix memcpy-bug in rose_set_mac_address
5
6[ Upstream commit 81213b5e8ae68e204aa7a3f83c4f9100405dbff9 ]
7
8If both addresses equal, nothing needs to be done. If the device is down,
9then we simply copy the new address to dev->dev_addr. If the device is up,
10then we add another loopback device with the new address, and if that does
11not fail, we remove the loopback device with the old address. And only
12then, we update the dev->dev_addr.
13
14Signed-off-by: Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 net/rose/rose_dev.c | 4 ++--
19 1 file changed, 2 insertions(+), 2 deletions(-)
20
21diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
22index 178ff4f..2679507 100644
23--- a/net/rose/rose_dev.c
24+++ b/net/rose/rose_dev.c
25@@ -96,11 +96,11 @@ static int rose_set_mac_address(struct net_device *dev, void *addr)
26 struct sockaddr *sa = addr;
27 int err;
28
29- if (!memcpy(dev->dev_addr, sa->sa_data, dev->addr_len))
30+ if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len))
31 return 0;
32
33 if (dev->flags & IFF_UP) {
34- err = rose_add_loopback_node((rose_address *)dev->dev_addr);
35+ err = rose_add_loopback_node((rose_address *)sa->sa_data);
36 if (err)
37 return err;
38
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch
new file mode 100644
index 00000000..42e8bde7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch
@@ -0,0 +1,38 @@
1From 1a9aa23e139f1305c1b8e1609e8275ed7456c9ba Mon Sep 17 00:00:00 2001
2From: Rabin Vincent <rabin@rab.in>
3Date: Thu, 29 Mar 2012 07:15:15 +0000
4Subject: [PATCH 05/60] net: usb: cdc_eem: fix mtu
5
6[ Upstream commit 78fb72f7936c01d5b426c03a691eca082b03f2b9 ]
7
8Make CDC EEM recalculate the hard_mtu after adjusting the
9hard_header_len.
10
11Without this, usbnet adjusts the MTU down to 1494 bytes, and the host is
12unable to receive standard 1500-byte frames from the device.
13
14Tested with the Linux USB Ethernet gadget.
15
16Cc: Oliver Neukum <oliver@neukum.name>
17Signed-off-by: Rabin Vincent <rabin@rab.in>
18Signed-off-by: David S. Miller <davem@davemloft.net>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/net/usb/cdc_eem.c | 1 +
22 1 file changed, 1 insertion(+)
23
24diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
25index 882f53f..82d43b2 100644
26--- a/drivers/net/usb/cdc_eem.c
27+++ b/drivers/net/usb/cdc_eem.c
28@@ -93,6 +93,7 @@ static int eem_bind(struct usbnet *dev, struct usb_interface *intf)
29 /* no jumbogram (16K) support for now */
30
31 dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN;
32+ dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
33
34 return 0;
35 }
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch
new file mode 100644
index 00000000..f4cf9331
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch
@@ -0,0 +1,49 @@
1From 5d9449356576f8bb42022c55e966a6d00a27d810 Mon Sep 17 00:00:00 2001
2From: Kenth Eriksson <kenth.eriksson@transmode.com>
3Date: Tue, 27 Mar 2012 22:05:54 +0000
4Subject: [PATCH 06/60] Fix non TBI PHY access; a bad merge undid bug fix in a
5 previous commit.
6
7[ Upstream commit 464b57da56910c8737ede75ad820b9a7afc46b3e ]
8
9The merge done in commit b26e478f undid bug fix in commit c3e072f8
10("net: fsl_pq_mdio: fix non tbi phy access"), with the result that non
11TBI (e.g. MDIO) PHYs cannot be accessed.
12
13Signed-off-by: Kenth Eriksson <kenth.eriksson@transmode.com>
14Signed-off-by: David S. Miller <davem@davemloft.net>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/net/ethernet/freescale/fsl_pq_mdio.c | 13 ++++++-------
18 1 file changed, 6 insertions(+), 7 deletions(-)
19
20diff --git a/drivers/net/ethernet/freescale/fsl_pq_mdio.c b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
21index 4d9f84b..ada234a 100644
22--- a/drivers/net/ethernet/freescale/fsl_pq_mdio.c
23+++ b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
24@@ -356,16 +356,15 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev)
25
26 if (prop)
27 tbiaddr = *prop;
28- }
29-
30- if (tbiaddr == -1) {
31- err = -EBUSY;
32
33- goto err_free_irqs;
34+ if (tbiaddr == -1) {
35+ err = -EBUSY;
36+ goto err_free_irqs;
37+ } else {
38+ out_be32(tbipa, tbiaddr);
39+ }
40 }
41
42- out_be32(tbipa, tbiaddr);
43-
44 err = of_mdiobus_register(new_bus, np);
45 if (err) {
46 printk (KERN_ERR "%s: Cannot register as MDIO bus\n",
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch
new file mode 100644
index 00000000..b52abe1a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch
@@ -0,0 +1,31 @@
1From be6768ee3f1d5ade04946ae2d9b9642e795b4dc3 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Wed, 21 Mar 2012 13:22:40 +0000
4Subject: [PATCH 07/60] ASoC: wm8994: Update WM8994 DCS calibration
5
6commit e16605855d58803fe0608417150c7a618b4f8243 upstream.
7
8Based on latest production information.
9
10Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
11Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12---
13 sound/soc/codecs/wm8994.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
17index 6e502af..2f1f5f8 100644
18--- a/sound/soc/codecs/wm8994.c
19+++ b/sound/soc/codecs/wm8994.c
20@@ -3190,7 +3190,7 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
21 case 2:
22 case 3:
23 wm8994->hubs.dcs_codes_l = -9;
24- wm8994->hubs.dcs_codes_r = -5;
25+ wm8994->hubs.dcs_codes_r = -7;
26 break;
27 default:
28 break;
29--
301.7.9.5
31
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch
new file mode 100644
index 00000000..b704a972
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch
@@ -0,0 +1,52 @@
1From 5afee8ffbb086ee0d779cba829f1d0faa0f35b9c Mon Sep 17 00:00:00 2001
2From: Marc Kleine-Budde <mkl@blackshift.org>
3Date: Wed, 8 Feb 2012 20:24:29 +0100
4Subject: [PATCH 08/60] mtd: ixp4xx: oops in ixp4xx_flash_probe
5
6commit a3c1e3b732b3708a80e4035b9d845f3f7c7dd0c9 upstream.
7
8In commit "c797533 mtd: abstract last MTD partition parser argument" the
9third argument of "mtd_device_parse_register()" changed from start address
10of the MTD device to a pointer to a struct.
11
12The "ixp4xx_flash_probe()" function was not converted properly, causing
13an oops during boot.
14
15This patch fixes the problem by filling the needed information into a
16"struct mtd_part_parser_data" and passing it to
17"mtd_device_parse_register()".
18
19Signed-off-by: Marc Kleine-Budde <mkl@blackshift.org>
20Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
21Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/mtd/maps/ixp4xx.c | 5 ++++-
25 1 file changed, 4 insertions(+), 1 deletion(-)
26
27diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
28index 3040901..696372f 100644
29--- a/drivers/mtd/maps/ixp4xx.c
30+++ b/drivers/mtd/maps/ixp4xx.c
31@@ -182,6 +182,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
32 {
33 struct flash_platform_data *plat = dev->dev.platform_data;
34 struct ixp4xx_flash_info *info;
35+ struct mtd_part_parser_data ppdata = {
36+ .origin = dev->resource->start,
37+ };
38 int err = -1;
39
40 if (!plat)
41@@ -247,7 +250,7 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
42 /* Use the fast version */
43 info->map.write = ixp4xx_write16;
44
45- err = mtd_device_parse_register(info->mtd, probes, dev->resource->start,
46+ err = mtd_device_parse_register(info->mtd, probes, &ppdata,
47 plat->parts, plat->nr_parts);
48 if (err) {
49 printk(KERN_ERR "Could not parse partitions\n");
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch
new file mode 100644
index 00000000..5d9a1e64
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch
@@ -0,0 +1,45 @@
1From 1f6651f5448df6b40e8feafccceed942f192a430 Mon Sep 17 00:00:00 2001
2From: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
3Date: Thu, 23 Feb 2012 17:59:49 +0100
4Subject: [PATCH 09/60] mtd: mips: lantiq: reintroduce support for cmdline
5 partitions
6
7commit bf011f2ed53d587fdd8148c173c4f09ed77bdf1a upstream.
8
9Since commit ca97dec2ab5c87e9fbdf7e882e1820004a3966fa the
10command line parsing of MTD partitions does not work anymore.
11
12Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
13Signed-off-by: John Crispin <blogic@openwrt.org>
14Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
15Acked-by: John Crispin <blogic@openwrt.org>
16Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/mtd/maps/lantiq-flash.c | 3 ++-
20 1 file changed, 2 insertions(+), 1 deletion(-)
21
22diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c
23index 4f10e27..764d468 100644
24--- a/drivers/mtd/maps/lantiq-flash.c
25+++ b/drivers/mtd/maps/lantiq-flash.c
26@@ -45,6 +45,7 @@ struct ltq_mtd {
27 };
28
29 static char ltq_map_name[] = "ltq_nor";
30+static const char *ltq_probe_types[] __devinitconst = { "cmdlinepart", NULL };
31
32 static map_word
33 ltq_read16(struct map_info *map, unsigned long adr)
34@@ -168,7 +169,7 @@ ltq_mtd_probe(struct platform_device *pdev)
35 cfi->addr_unlock1 ^= 1;
36 cfi->addr_unlock2 ^= 1;
37
38- err = mtd_device_parse_register(ltq_mtd->mtd, NULL, 0,
39+ err = mtd_device_parse_register(ltq_mtd->mtd, ltq_probe_types, 0,
40 ltq_mtd_data->parts, ltq_mtd_data->nr_parts);
41 if (err) {
42 dev_err(&pdev->dev, "failed to add partitions\n");
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch
new file mode 100644
index 00000000..e7cbea3e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch
@@ -0,0 +1,42 @@
1From a34ab661a8d66083d7e6bd4ff4e9d6758699d8ab Mon Sep 17 00:00:00 2001
2From: Wolfram Sang <w.sang@pengutronix.de>
3Date: Tue, 31 Jan 2012 13:10:43 +0100
4Subject: [PATCH 10/60] mtd: nand: gpmi: use correct member for checking
5 NAND_BBT_USE_FLASH
6
7commit 5289966ea576a062b80319975b31b661c196ff9d upstream.
8
9This has been moved from .options to .bbt_options meanwhile. So, it
10currently checks for something totally different (NAND_OWN_BUFFERS) and
11decides according to that.
12
13Artem Bityutskiy: the options were moved in
14a40f734 mtd: nand: consolidate redundant flash-based BBT flags
15
16Artem Bityutskiy: CCing -stable
17
18Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
19Acked-by: Huang Shijie <b32955@freescale.com>
20Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
21Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
28index 493ec2f..f39f83e 100644
29--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
30+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
31@@ -1124,7 +1124,7 @@ static int gpmi_block_markbad(struct mtd_info *mtd, loff_t ofs)
32 chip->bbt[block >> 2] |= 0x01 << ((block & 0x03) << 1);
33
34 /* Do we have a flash based bad block table ? */
35- if (chip->options & NAND_BBT_USE_FLASH)
36+ if (chip->bbt_options & NAND_BBT_USE_FLASH)
37 ret = nand_update_bbt(mtd, ofs);
38 else {
39 chipnr = (int)(ofs >> chip->chip_shift);
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch
new file mode 100644
index 00000000..3fc30003
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch
@@ -0,0 +1,38 @@
1From 187a3e03c6c3ddb6ec2a62402f9df4e26ea59d96 Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Fri, 3 Feb 2012 10:16:50 +0200
4Subject: [PATCH 11/60] mtd: sst25l: initialize writebufsize
5
6commit c4cc625ea5958d065c21cc0fcea29e9ed8f3d2bc upstream.
7
8The writebufsize concept was introduce by commit
9"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
10the maximum amount of data the device writes to the media at a time. This is
11an important parameter for UBIFS which is used during recovery and which
12basically defines how big a corruption caused by a power cut can be.
13
14Set writebufsize to the flash page size because it is the maximum amount of
15data it writes at a time.
16
17Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
18Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/mtd/devices/sst25l.c | 1 +
22 1 file changed, 1 insertion(+)
23
24diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c
25index d38ef3b..9c35250 100644
26--- a/drivers/mtd/devices/sst25l.c
27+++ b/drivers/mtd/devices/sst25l.c
28@@ -402,6 +402,7 @@ static int __devinit sst25l_probe(struct spi_device *spi)
29 flash->mtd.flags = MTD_CAP_NORFLASH;
30 flash->mtd.erasesize = flash_info->erase_size;
31 flash->mtd.writesize = flash_info->page_size;
32+ flash->mtd.writebufsize = flash_info->page_size;
33 flash->mtd.size = flash_info->page_size * flash_info->nr_pages;
34 flash->mtd.erase = sst25l_erase;
35 flash->mtd.read = sst25l_read;
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch
new file mode 100644
index 00000000..1a57dc36
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch
@@ -0,0 +1,39 @@
1From e9ade583fc6f98a39805d5cb7eba7048eaf17575 Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Fri, 3 Feb 2012 09:32:44 +0200
4Subject: [PATCH 12/60] mtd: block2mtd: initialize writebufsize
5
6commit b604387411ec6a072e95910099262616edd2bd2f upstream.
7
8The writebufsize concept was introduce by commit
9"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
10the maximum amount of data the device writes to the media at a time. This is
11an important parameter for UBIFS which is used during recovery and which
12basically defines how big a corruption caused by a power cut can be.
13
14However, we forgot to set this parameter for block2mtd. Set it to PAGE_SIZE
15because this is actually the amount of data we write at a time.
16
17Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
18Acked-by: Joern Engel <joern@lazybastard.org>
19Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/mtd/devices/block2mtd.c | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
26index b78f231..8cd983c 100644
27--- a/drivers/mtd/devices/block2mtd.c
28+++ b/drivers/mtd/devices/block2mtd.c
29@@ -284,6 +284,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
30 dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK;
31 dev->mtd.erasesize = erase_size;
32 dev->mtd.writesize = 1;
33+ dev->mtd.writebufsize = PAGE_SIZE;
34 dev->mtd.type = MTD_RAM;
35 dev->mtd.flags = MTD_CAP_RAM;
36 dev->mtd.erase = block2mtd_erase;
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch
new file mode 100644
index 00000000..12aaba01
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0013-mtd-lart-initialize-writebufsize.patch
@@ -0,0 +1,37 @@
1From 377b1a9ee6412981a7c01ea196c81401ded07d97 Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Fri, 3 Feb 2012 09:53:28 +0200
4Subject: [PATCH 13/60] mtd: lart: initialize writebufsize
5
6commit fcc44a07dae0af16e84e93425fc8afe642ddc603 upstream.
7
8The writebufsize concept was introduce by commit
9"0e4ca7e mtd: add writebufsize field to mtd_info struct" and it represents
10the maximum amount of data the device writes to the media at a time. This is
11an important parameter for UBIFS which is used during recovery and which
12basically defines how big a corruption caused by a power cut can be.
13
14Set writebufsize to 4 because this drivers writes at max 4 bytes at a time.
15
16Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
17Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/mtd/devices/lart.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c
24index 3a11ea6..5f12668 100644
25--- a/drivers/mtd/devices/lart.c
26+++ b/drivers/mtd/devices/lart.c
27@@ -630,6 +630,7 @@ static int __init lart_flash_init (void)
28 mtd.name = module_name;
29 mtd.type = MTD_NORFLASH;
30 mtd.writesize = 1;
31+ mtd.writebufsize = 4;
32 mtd.flags = MTD_CAP_NORFLASH;
33 mtd.size = FLASH_BLOCKSIZE_PARAM * FLASH_NUMBLOCKS_16m_PARAM + FLASH_BLOCKSIZE_MAIN * FLASH_NUMBLOCKS_16m_MAIN;
34 mtd.erasesize = FLASH_BLOCKSIZE_MAIN;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch
new file mode 100644
index 00000000..6c7ac61d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0014-mtd-m25p80-set-writebufsize.patch
@@ -0,0 +1,37 @@
1From 60498eb2c6666663bf2d0f09d805048e32108fe8 Mon Sep 17 00:00:00 2001
2From: Brian Norris <computersforpeace@gmail.com>
3Date: Tue, 31 Jan 2012 00:06:03 -0800
4Subject: [PATCH 14/60] mtd: m25p80: set writebufsize
5
6commit b54f47c8bcfc5f766bf13ec31bd7dd1d4726d33b upstream.
7
8Using UBI on m25p80 can give messages like:
9
10 UBI error: io_init: bad write buffer size 0 for 1 min. I/O unit
11
12We need to initialize writebufsize; I think "page_size" is the correct
13"bufsize", although I'm not sure. Comments?
14
15Signed-off-by: Brian Norris <computersforpeace@gmail.com>
16Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
17Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/mtd/devices/m25p80.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
24index 884904d..9f9982f 100644
25--- a/drivers/mtd/devices/m25p80.c
26+++ b/drivers/mtd/devices/m25p80.c
27@@ -932,6 +932,7 @@ static int __devinit m25p_probe(struct spi_device *spi)
28 ppdata.of_node = spi->dev.of_node;
29 flash->mtd.dev.parent = &spi->dev;
30 flash->page_size = info->page_size;
31+ flash->mtd.writebufsize = flash->page_size;
32
33 if (info->addr_width)
34 flash->addr_width = info->addr_width;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch
new file mode 100644
index 00000000..5a9fe06e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch
@@ -0,0 +1,132 @@
1From 74dd093eb7fe9227cbcf62d0d9467d679a46982b Mon Sep 17 00:00:00 2001
2From: Andi Kleen <andi@firstfloor.org>
3Date: Mon, 6 Feb 2012 08:17:11 -0800
4Subject: [PATCH 15/60] ACPI: Do cpufreq clamping for throttling per package
5 v2
6
7commit 2815ab92ba3ab27556212cc306288dc95692824b upstream.
8
9On Intel CPUs the processor typically uses the highest frequency
10set by any logical CPU. When the system overheats
11Linux first forces the frequency to the lowest available one
12to lower the temperature.
13
14However this was done only per logical CPU, which means all
15logical CPUs in a package would need to go through this before
16the frequency is actually lowered.
17
18Worse this delay actually prevents real throttling, because
19the real throttle code only proceeds when the lowest frequency
20is already reached.
21
22So when a throttle event happens force the lowest frequency
23for all CPUs in the package where it happened. The per CPU
24state is now kept per package, not per logical CPU. An alternative
25would be to do it per cpufreq unit, but since we want to bring
26down the temperature of the complete chip it's better
27to do it for all.
28
29In principle it may even make sense to do it for all CPUs,
30but I kept it on the package for now.
31
32With this change the frequency is actually lowered, which
33in terms also allows real throttling to proceed.
34
35I also removed an unnecessary per cpu variable initialization.
36
37v2: Fix package mapping
38
39Signed-off-by: Andi Kleen <ak@linux.intel.com>
40Signed-off-by: Len Brown <len.brown@intel.com>
41Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
42---
43 drivers/acpi/processor_thermal.c | 45 +++++++++++++++++++++++++++++++-------
44 1 file changed, 37 insertions(+), 8 deletions(-)
45
46diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
47index 870550d..4da7d9d 100644
48--- a/drivers/acpi/processor_thermal.c
49+++ b/drivers/acpi/processor_thermal.c
50@@ -58,6 +58,27 @@ ACPI_MODULE_NAME("processor_thermal");
51 static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_reduction_pctg);
52 static unsigned int acpi_thermal_cpufreq_is_init = 0;
53
54+#define reduction_pctg(cpu) \
55+ per_cpu(cpufreq_thermal_reduction_pctg, phys_package_first_cpu(cpu))
56+
57+/*
58+ * Emulate "per package data" using per cpu data (which should really be
59+ * provided elsewhere)
60+ *
61+ * Note we can lose a CPU on cpu hotunplug, in this case we forget the state
62+ * temporarily. Fortunately that's not a big issue here (I hope)
63+ */
64+static int phys_package_first_cpu(int cpu)
65+{
66+ int i;
67+ int id = topology_physical_package_id(cpu);
68+
69+ for_each_online_cpu(i)
70+ if (topology_physical_package_id(i) == id)
71+ return i;
72+ return 0;
73+}
74+
75 static int cpu_has_cpufreq(unsigned int cpu)
76 {
77 struct cpufreq_policy policy;
78@@ -77,7 +98,7 @@ static int acpi_thermal_cpufreq_notifier(struct notifier_block *nb,
79
80 max_freq = (
81 policy->cpuinfo.max_freq *
82- (100 - per_cpu(cpufreq_thermal_reduction_pctg, policy->cpu) * 20)
83+ (100 - reduction_pctg(policy->cpu) * 20)
84 ) / 100;
85
86 cpufreq_verify_within_limits(policy, 0, max_freq);
87@@ -103,16 +124,28 @@ static int cpufreq_get_cur_state(unsigned int cpu)
88 if (!cpu_has_cpufreq(cpu))
89 return 0;
90
91- return per_cpu(cpufreq_thermal_reduction_pctg, cpu);
92+ return reduction_pctg(cpu);
93 }
94
95 static int cpufreq_set_cur_state(unsigned int cpu, int state)
96 {
97+ int i;
98+
99 if (!cpu_has_cpufreq(cpu))
100 return 0;
101
102- per_cpu(cpufreq_thermal_reduction_pctg, cpu) = state;
103- cpufreq_update_policy(cpu);
104+ reduction_pctg(cpu) = state;
105+
106+ /*
107+ * Update all the CPUs in the same package because they all
108+ * contribute to the temperature and often share the same
109+ * frequency.
110+ */
111+ for_each_online_cpu(i) {
112+ if (topology_physical_package_id(i) ==
113+ topology_physical_package_id(cpu))
114+ cpufreq_update_policy(i);
115+ }
116 return 0;
117 }
118
119@@ -120,10 +153,6 @@ void acpi_thermal_cpufreq_init(void)
120 {
121 int i;
122
123- for (i = 0; i < nr_cpu_ids; i++)
124- if (cpu_present(i))
125- per_cpu(cpufreq_thermal_reduction_pctg, i) = 0;
126-
127 i = cpufreq_register_notifier(&acpi_thermal_cpufreq_notifier_block,
128 CPUFREQ_POLICY_NOTIFIER);
129 if (!i)
130--
1311.7.9.5
132
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch
new file mode 100644
index 00000000..3e12d940
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch
@@ -0,0 +1,43 @@
1From 2d081f28eff72e6dec19f1e720a03ee656e93902 Mon Sep 17 00:00:00 2001
2From: Yinghai Lu <yinghai@kernel.org>
3Date: Sat, 3 Mar 2012 13:29:20 -0800
4Subject: [PATCH 16/60] PNPACPI: Fix device ref leaking in acpi_pnp_match
5
6commit 89e96ada572fb216e582dbe3f64e1a6939a37f74 upstream.
7
8During testing pci root bus removal, found some root bus bridge is not freed.
9If booting with pnpacpi=off, those hostbridge could be freed without problem.
10It turns out that some devices reference are not released during acpi_pnp_match.
11that match should not hold one device ref during every calling.
12Add pu_device calling before returning.
13
14Signed-off-by: Yinghai Lu <yinghai@kernel.org>
15Signed-off-by: Len Brown <len.brown@intel.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/pnp/pnpacpi/core.c | 7 ++++++-
19 1 file changed, 6 insertions(+), 1 deletion(-)
20
21diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
22index b00c176..d21e8f5 100644
23--- a/drivers/pnp/pnpacpi/core.c
24+++ b/drivers/pnp/pnpacpi/core.c
25@@ -321,9 +321,14 @@ static int __init acpi_pnp_match(struct device *dev, void *_pnp)
26 {
27 struct acpi_device *acpi = to_acpi_device(dev);
28 struct pnp_dev *pnp = _pnp;
29+ struct device *physical_device;
30+
31+ physical_device = acpi_get_physical_device(acpi->handle);
32+ if (physical_device)
33+ put_device(physical_device);
34
35 /* true means it matched */
36- return !acpi_get_physical_device(acpi->handle)
37+ return !physical_device
38 && compare_pnp_id(pnp->id, acpi_device_hid(acpi));
39 }
40
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch
new file mode 100644
index 00000000..05e05f3d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch
@@ -0,0 +1,69 @@
1From 3dc8e6e70444a964715bc72938d2a1f5330a0aff Mon Sep 17 00:00:00 2001
2From: Julian Anastasov <ja@ssi.bg>
3Date: Thu, 23 Feb 2012 22:40:43 +0200
4Subject: [PATCH 17/60] ACPICA: Fix regression in FADT revision checks
5
6commit 3e80acd1af40fcd91a200b0416a7616b20c5d647 upstream.
7
8 commit 64b3db22c04586997ab4be46dd5a5b99f8a2d390 (2.6.39),
9"Remove use of unreliable FADT revision field" causes regression
10for old P4 systems because now cst_control and other fields are
11not reset to 0.
12
13 The effect is that acpi_processor_power_init will notice
14cst_control != 0 and a write to CST_CNT register is performed
15that should not happen. As result, the system oopses after the
16"No _CST, giving up" message, sometimes in acpi_ns_internalize_name,
17sometimes in acpi_ns_get_type, usually at random places. May be
18during migration to CPU 1 in acpi_processor_get_throttling.
19
20 Every one of these settings help to avoid this problem:
21 - acpi=off
22 - processor.nocst=1
23 - maxcpus=1
24
25 The fix is to update acpi_gbl_FADT.header.length after
26the original value is used to check for old revisions.
27
28https://bugzilla.kernel.org/show_bug.cgi?id=42700
29https://bugzilla.redhat.com/show_bug.cgi?id=727865
30
31Signed-off-by: Julian Anastasov <ja@ssi.bg>
32Acked-by: Bob Moore <robert.moore@intel.com>
33Signed-off-by: Len Brown <len.brown@intel.com>
34Cc: Jonathan Nieder <jrnieder@gmail.com>
35Cc: Josh Boyer <jwboyer@gmail.com>
36Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
37---
38 drivers/acpi/acpica/tbfadt.c | 8 ++++----
39 1 file changed, 4 insertions(+), 4 deletions(-)
40
41diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
42index 6f5588e..4c531b4 100644
43--- a/drivers/acpi/acpica/tbfadt.c
44+++ b/drivers/acpi/acpica/tbfadt.c
45@@ -350,10 +350,6 @@ static void acpi_tb_convert_fadt(void)
46 u32 address32;
47 u32 i;
48
49- /* Update the local FADT table header length */
50-
51- acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
52-
53 /*
54 * Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
55 * Later code will always use the X 64-bit field. Also, check for an
56@@ -395,6 +391,10 @@ static void acpi_tb_convert_fadt(void)
57 acpi_gbl_FADT.boot_flags = 0;
58 }
59
60+ /* Update the local FADT table header length */
61+
62+ acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
63+
64 /*
65 * Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X"
66 * generic address structures as necessary. Later code will always use
67--
681.7.9.5
69
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch
new file mode 100644
index 00000000..7bd2cc2f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch
@@ -0,0 +1,32 @@
1From 3d588be49327372d7c61bcf5e1c691031ecee200 Mon Sep 17 00:00:00 2001
2From: Jan Beulich <JBeulich@suse.com>
3Date: Thu, 8 Mar 2012 09:41:25 +0000
4Subject: [PATCH 18/60] modpost: fix ALL_INIT_DATA_SECTIONS
5
6commit 9aaf440f8fabcebf9ea79a62ccf4c212e6544b49 upstream.
7
8This was lacking a comma between two supposed to be separate strings.
9
10Signed-off-by: Jan Beulich <jbeulich@suse.com>
11Signed-off-by: Michal Marek <mmarek@suse.cz>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13---
14 scripts/mod/modpost.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
18index 2bd594e..159b4cc 100644
19--- a/scripts/mod/modpost.c
20+++ b/scripts/mod/modpost.c
21@@ -849,7 +849,7 @@ static void check_section(const char *modname, struct elf_info *elf,
22
23 #define ALL_INIT_DATA_SECTIONS \
24 ".init.setup$", ".init.rodata$", \
25- ".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$" \
26+ ".devinit.rodata$", ".cpuinit.rodata$", ".meminit.rodata$", \
27 ".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$"
28 #define ALL_EXIT_DATA_SECTIONS \
29 ".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$"
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch
new file mode 100644
index 00000000..1bd31496
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch
@@ -0,0 +1,55 @@
1From a62ad6cb0e0456a184ba7678d456a14cd33dfeea Mon Sep 17 00:00:00 2001
2From: Jiang Liu <liuj97@gmail.com>
3Date: Fri, 30 Mar 2012 23:11:33 +0800
4Subject: [PATCH 19/60] genirq: Adjust irq thread affinity on
5 IRQ_SET_MASK_OK_NOCOPY return value
6
7commit f5cb92ac82d06cb583c1f66666314c5c0a4d7913 upstream.
8
9irq_move_masked_irq() checks the return code of
10chip->irq_set_affinity() only for 0, but IRQ_SET_MASK_OK_NOCOPY is
11also a valid return code, which is there to avoid a redundant copy of
12the cpumask. But in case of IRQ_SET_MASK_OK_NOCOPY we not only avoid
13the redundant copy, we also fail to adjust the thread affinity of an
14eventually threaded interrupt handler.
15
16Handle IRQ_SET_MASK_OK (==0) and IRQ_SET_MASK_OK_NOCOPY(==1) return
17values correctly by checking the valid return values seperately.
18
19Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
20Cc: Jiang Liu <liuj97@gmail.com>
21Cc: Keping Chen <chenkeping@huawei.com>
22Link: http://lkml.kernel.org/r/1333120296-13563-2-git-send-email-jiang.liu@huawei.com
23Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 kernel/irq/migration.c | 10 +++++++---
27 1 file changed, 7 insertions(+), 3 deletions(-)
28
29diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c
30index 4742090..c3c8975 100644
31--- a/kernel/irq/migration.c
32+++ b/kernel/irq/migration.c
33@@ -43,12 +43,16 @@ void irq_move_masked_irq(struct irq_data *idata)
34 * masking the irqs.
35 */
36 if (likely(cpumask_any_and(desc->pending_mask, cpu_online_mask)
37- < nr_cpu_ids))
38- if (!chip->irq_set_affinity(&desc->irq_data,
39- desc->pending_mask, false)) {
40+ < nr_cpu_ids)) {
41+ int ret = chip->irq_set_affinity(&desc->irq_data,
42+ desc->pending_mask, false);
43+ switch (ret) {
44+ case IRQ_SET_MASK_OK:
45 cpumask_copy(desc->irq_data.affinity, desc->pending_mask);
46+ case IRQ_SET_MASK_OK_NOCOPY:
47 irq_set_thread_affinity(desc);
48 }
49+ }
50
51 cpumask_clear(desc->pending_mask);
52 }
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch
new file mode 100644
index 00000000..00288c5a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch
@@ -0,0 +1,77 @@
1From fea2076685048df406c2fc4d6542837a4306c6fd Mon Sep 17 00:00:00 2001
2From: Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
3Date: Thu, 22 Mar 2012 11:18:20 +0100
4Subject: [PATCH 20/60] tracing: Fix ftrace stack trace entries
5
6commit 01de982abf8c9e10fc3089e10585cd2cc914bdab upstream.
7
88 hex characters tell only half the tale for 64 bit CPUs,
9so use the appropriate length.
10
11Link: http://lkml.kernel.org/r/1332411501-8059-2-git-send-email-wolfgang.mauerer@siemens.com
12
13Signed-off-by: Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
14Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 kernel/trace/trace_entries.h | 16 ++++++++++++----
18 kernel/trace/trace_export.c | 2 +-
19 2 files changed, 13 insertions(+), 5 deletions(-)
20
21diff --git a/kernel/trace/trace_entries.h b/kernel/trace/trace_entries.h
22index 9336590..205dcac 100644
23--- a/kernel/trace/trace_entries.h
24+++ b/kernel/trace/trace_entries.h
25@@ -156,6 +156,12 @@ FTRACE_ENTRY_DUP(wakeup, ctx_switch_entry,
26
27 #define FTRACE_STACK_ENTRIES 8
28
29+#ifndef CONFIG_64BIT
30+# define IP_FMT "%08lx"
31+#else
32+# define IP_FMT "%016lx"
33+#endif
34+
35 FTRACE_ENTRY(kernel_stack, stack_entry,
36
37 TRACE_STACK,
38@@ -165,8 +171,9 @@ FTRACE_ENTRY(kernel_stack, stack_entry,
39 __dynamic_array(unsigned long, caller )
40 ),
41
42- F_printk("\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n"
43- "\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n",
44+ F_printk("\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
45+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
46+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n",
47 __entry->caller[0], __entry->caller[1], __entry->caller[2],
48 __entry->caller[3], __entry->caller[4], __entry->caller[5],
49 __entry->caller[6], __entry->caller[7])
50@@ -181,8 +188,9 @@ FTRACE_ENTRY(user_stack, userstack_entry,
51 __array( unsigned long, caller, FTRACE_STACK_ENTRIES )
52 ),
53
54- F_printk("\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n"
55- "\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n\t=> (%08lx)\n",
56+ F_printk("\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
57+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n"
58+ "\t=> (" IP_FMT ")\n\t=> (" IP_FMT ")\n",
59 __entry->caller[0], __entry->caller[1], __entry->caller[2],
60 __entry->caller[3], __entry->caller[4], __entry->caller[5],
61 __entry->caller[6], __entry->caller[7])
62diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
63index bbeec31..ad4000c 100644
64--- a/kernel/trace/trace_export.c
65+++ b/kernel/trace/trace_export.c
66@@ -150,7 +150,7 @@ ftrace_define_fields_##name(struct ftrace_event_call *event_call) \
67 #define __dynamic_array(type, item)
68
69 #undef F_printk
70-#define F_printk(fmt, args...) #fmt ", " __stringify(args)
71+#define F_printk(fmt, args...) __stringify(fmt) ", " __stringify(args)
72
73 #undef FTRACE_ENTRY
74 #define FTRACE_ENTRY(call, struct_name, etype, tstruct, print) \
75--
761.7.9.5
77
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch
new file mode 100644
index 00000000..d830db2d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch
@@ -0,0 +1,58 @@
1From 23cc657edadf5b126485d90d9a6178478ccc7a9d Mon Sep 17 00:00:00 2001
2From: Steven Rostedt <srostedt@redhat.com>
3Date: Tue, 27 Mar 2012 10:43:28 -0400
4Subject: [PATCH 21/60] tracing: Fix ent_size in trace output
5
6commit 12b5da349a8b94c9dbc3430a6bc42eabd9eaf50b upstream.
7
8When reading the trace file, the records of each of the per_cpu buffers
9are examined to find the next event to print out. At the point of looking
10at the event, the size of the event is recorded. But if the first event is
11chosen, the other events in the other CPU buffers will reset the event size
12that is stored in the iterator descriptor, causing the event size passed to
13the output functions to be incorrect.
14
15In most cases this is not a problem, but for the case of stack traces, it
16is. With the change to the stack tracing to record a dynamic number of
17back traces, the output depends on the size of the entry instead of the
18fixed 8 back traces. When the entry size is not correct, the back traces
19would not be fully printed.
20
21Note, reading from the per-cpu trace files were not affected.
22
23Reported-by: Thomas Gleixner <tglx@linutronix.de>
24Tested-by: Thomas Gleixner <tglx@linutronix.de>
25Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 kernel/trace/trace.c | 4 ++++
29 1 file changed, 4 insertions(+)
30
31diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
32index f2bd275..697e49d 100644
33--- a/kernel/trace/trace.c
34+++ b/kernel/trace/trace.c
35@@ -1642,6 +1642,7 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
36 int cpu_file = iter->cpu_file;
37 u64 next_ts = 0, ts;
38 int next_cpu = -1;
39+ int next_size = 0;
40 int cpu;
41
42 /*
43@@ -1673,9 +1674,12 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
44 next_cpu = cpu;
45 next_ts = ts;
46 next_lost = lost_events;
47+ next_size = iter->ent_size;
48 }
49 }
50
51+ iter->ent_size = next_size;
52+
53 if (ent_cpu)
54 *ent_cpu = next_cpu;
55
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch
new file mode 100644
index 00000000..05958eb6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch
@@ -0,0 +1,34 @@
1From fced6a21a4444111945939b57d4f274dcb9d0cdc Mon Sep 17 00:00:00 2001
2From: Geert Uytterhoeven <geert@linux-m68k.org>
3Date: Sun, 18 Mar 2012 13:21:38 +0100
4Subject: [PATCH 22/60] m68k/mac: Add missing platform check before
5 registering platform devices
6
7commit 6cfeba53911d6d2f17ebbd1246893557d5ff5aeb upstream.
8
9On multi-platform kernels, the Mac platform devices should be registered
10when running on Mac only. Else it may crash later.
11
12Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 arch/m68k/mac/config.c | 3 +++
16 1 file changed, 3 insertions(+)
17
18diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
19index c247de0..1918d76 100644
20--- a/arch/m68k/mac/config.c
21+++ b/arch/m68k/mac/config.c
22@@ -950,6 +950,9 @@ int __init mac_platform_init(void)
23 {
24 u8 *swim_base;
25
26+ if (!MACH_IS_MAC)
27+ return -ENODEV;
28+
29 /*
30 * Serial devices
31 */
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch
new file mode 100644
index 00000000..52d26c3d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch
@@ -0,0 +1,52 @@
1From 0cf704acf102ad1855f06ce26e56e34ebd63fc3c Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Mon, 19 Mar 2012 16:00:26 +0100
4Subject: [PATCH 23/60] mac80211: fix possible tid_rx->reorder_timer use after
5 free
6
7commit d72308bff5c2fa207949a5925b020bce74495e33 upstream.
8
9Is possible that we will arm the tid_rx->reorder_timer after
10del_timer_sync() in ___ieee80211_stop_rx_ba_session(). We need to stop
11timer after RCU grace period finish, so move it to
12ieee80211_free_tid_rx(). Timer will not be armed again, as
13rcu_dereference(sta->ampdu_mlme.tid_rx[tid]) will return NULL.
14
15Debug object detected problem with the following warning:
16ODEBUG: free active (active state 0) object type: timer_list hint: sta_rx_agg_reorder_timer_expired+0x0/0xf0 [mac80211]
17
18Bug report (with all warning messages):
19https://bugzilla.redhat.com/show_bug.cgi?id=804007
20
21Reported-by: "jan p. springer" <jsd@igroup.org>
22Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
23Signed-off-by: John W. Linville <linville@tuxdriver.com>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 net/mac80211/agg-rx.c | 3 ++-
27 1 file changed, 2 insertions(+), 1 deletion(-)
28
29diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
30index 41c2310..aea1559 100644
31--- a/net/mac80211/agg-rx.c
32+++ b/net/mac80211/agg-rx.c
33@@ -49,6 +49,8 @@ static void ieee80211_free_tid_rx(struct rcu_head *h)
34 container_of(h, struct tid_ampdu_rx, rcu_head);
35 int i;
36
37+ del_timer_sync(&tid_rx->reorder_timer);
38+
39 for (i = 0; i < tid_rx->buf_size; i++)
40 dev_kfree_skb(tid_rx->reorder_buf[i]);
41 kfree(tid_rx->reorder_buf);
42@@ -88,7 +90,6 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
43 tid, 0, reason);
44
45 del_timer_sync(&tid_rx->session_timer);
46- del_timer_sync(&tid_rx->reorder_timer);
47
48 call_rcu(&tid_rx->rcu_head, ieee80211_free_tid_rx);
49 }
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch
new file mode 100644
index 00000000..a6dfc462
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch
@@ -0,0 +1,54 @@
1From 2e80dec6dad3b037b7b6499048c139436c6f0710 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Mon, 26 Mar 2012 09:59:48 -0500
4Subject: [PATCH 24/60] rtlwifi: rtl8192ce: rtl8192cu: rtl8192de: Fix low-gain
5 setting when scanning
6
7commit 643c61e119459e9d750087b7b34be94491efebf9 upstream.
8
9In https://bugzilla.redhat.com/show_bug.cgi?id=770207, slowdowns of driver
10rtl8192ce are reported. One fix (commit a9b89e2) has already been applied,
11and it helped, but the maximum RX speed would still drop to 1 Mbps. As in
12the previous fix, the initial gain was determined to be the problem; however,
13the problem arises from a setting of the gain when scans are started.
14
15Driver rtl8192de also has the same code structure - this one is fixed as well.
16
17Reported-and-Tested-by: Ivan Pesin <ivan.pesin@gmail.com>
18Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
19Signed-off-by: John W. Linville <linville@tuxdriver.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 2 +-
23 drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 2 +-
24 2 files changed, 2 insertions(+), 2 deletions(-)
25
26diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
27index 1f07558..f20678a 100644
28--- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
29+++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
30@@ -1968,7 +1968,7 @@ void rtl92c_phy_set_io(struct ieee80211_hw *hw)
31 break;
32 case IO_CMD_PAUSE_DM_BY_SCAN:
33 rtlphy->initgain_backup.xaagccore1 = dm_digtable.cur_igvalue;
34- dm_digtable.cur_igvalue = 0x17;
35+ dm_digtable.cur_igvalue = 0x37;
36 rtl92c_dm_write_dig(hw);
37 break;
38 default:
39diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
40index 0883349..2cf4c5f 100644
41--- a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
42+++ b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c
43@@ -3192,7 +3192,7 @@ static void rtl92d_phy_set_io(struct ieee80211_hw *hw)
44 break;
45 case IO_CMD_PAUSE_DM_BY_SCAN:
46 rtlphy->initgain_backup.xaagccore1 = de_digtable.cur_igvalue;
47- de_digtable.cur_igvalue = 0x17;
48+ de_digtable.cur_igvalue = 0x37;
49 rtl92d_dm_write_dig(hw);
50 break;
51 default:
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch
new file mode 100644
index 00000000..f38c6fb8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch
@@ -0,0 +1,48 @@
1From 604965714e342993a12bd7aff566b9d4dd531fe9 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Mon, 26 Mar 2012 21:15:53 +0100
4Subject: [PATCH 25/60] drm: Validate requested virtual size against allocated
5 fb size
6
7commit 62fb376e214d3c1bfdf6fbb77dac162f6da04d7e upstream.
8
9mplayer -vo fbdev tries to create a screen that is twice as tall as the
10allocated framebuffer for "doublebuffering". By default, and all in-tree
11users, only sufficient memory is allocated and mapped to satisfy the
12smallest framebuffer and the virtual size is no larger than the actual.
13For these users, we should therefore reject any userspace request to
14create a screen that requires a buffer larger than the framebuffer
15originally allocated.
16
17References: https://bugs.freedesktop.org/show_bug.cgi?id=38138
18Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
19Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
20Signed-off-by: Dave Airlie <airlied@redhat.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/gpu/drm/drm_fb_helper.c | 8 ++++++--
24 1 file changed, 6 insertions(+), 2 deletions(-)
25
26diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
27index 80fe39d..dd58373 100644
28--- a/drivers/gpu/drm/drm_fb_helper.c
29+++ b/drivers/gpu/drm/drm_fb_helper.c
30@@ -610,9 +610,13 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
31 return -EINVAL;
32
33 /* Need to resize the fb object !!! */
34- if (var->bits_per_pixel > fb->bits_per_pixel || var->xres > fb->width || var->yres > fb->height) {
35+ if (var->bits_per_pixel > fb->bits_per_pixel ||
36+ var->xres > fb->width || var->yres > fb->height ||
37+ var->xres_virtual > fb->width || var->yres_virtual > fb->height) {
38 DRM_DEBUG("fb userspace requested width/height/bpp is greater than current fb "
39- "object %dx%d-%d > %dx%d-%d\n", var->xres, var->yres, var->bits_per_pixel,
40+ "request %dx%d-%d (virtual %dx%d) > %dx%d-%d\n",
41+ var->xres, var->yres, var->bits_per_pixel,
42+ var->xres_virtual, var->yres_virtual,
43 fb->width, fb->height, fb->bits_per_pixel);
44 return -EINVAL;
45 }
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch
new file mode 100644
index 00000000..44a92d2c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch
@@ -0,0 +1,75 @@
1From bfb12525292fbd7a9837de23fc1e8dda589b43a1 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Thu, 29 Mar 2012 19:04:08 -0400
4Subject: [PATCH 26/60] drm/radeon/kms: fix fans after resume
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 402976fe51b2d1a58a29ba06fa1ca5ace3a4cdcd upstream.
10
11On pre-R600 asics, the SpeedFanControl table is not
12executed as part of ASIC_Init as it is on newer asics.
13
14Fixes:
15https://bugzilla.kernel.org/show_bug.cgi?id=29412
16
17Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
18Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
19Signed-off-by: Dave Airlie <airlied@redhat.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/gpu/drm/radeon/atom.c | 15 ++++++++++++++-
23 drivers/gpu/drm/radeon/atom.h | 1 +
24 2 files changed, 15 insertions(+), 1 deletion(-)
25
26diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
27index 14cc88a..3a05cdb 100644
28--- a/drivers/gpu/drm/radeon/atom.c
29+++ b/drivers/gpu/drm/radeon/atom.c
30@@ -1304,8 +1304,11 @@ struct atom_context *atom_parse(struct card_info *card, void *bios)
31
32 int atom_asic_init(struct atom_context *ctx)
33 {
34+ struct radeon_device *rdev = ctx->card->dev->dev_private;
35 int hwi = CU16(ctx->data_table + ATOM_DATA_FWI_PTR);
36 uint32_t ps[16];
37+ int ret;
38+
39 memset(ps, 0, 64);
40
41 ps[0] = cpu_to_le32(CU32(hwi + ATOM_FWI_DEFSCLK_PTR));
42@@ -1315,7 +1318,17 @@ int atom_asic_init(struct atom_context *ctx)
43
44 if (!CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_INIT))
45 return 1;
46- return atom_execute_table(ctx, ATOM_CMD_INIT, ps);
47+ ret = atom_execute_table(ctx, ATOM_CMD_INIT, ps);
48+ if (ret)
49+ return ret;
50+
51+ memset(ps, 0, 64);
52+
53+ if (rdev->family < CHIP_R600) {
54+ if (CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_SPDFANCNTL))
55+ atom_execute_table(ctx, ATOM_CMD_SPDFANCNTL, ps);
56+ }
57+ return ret;
58 }
59
60 void atom_destroy(struct atom_context *ctx)
61diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h
62index 93cfe20..25fea63 100644
63--- a/drivers/gpu/drm/radeon/atom.h
64+++ b/drivers/gpu/drm/radeon/atom.h
65@@ -44,6 +44,7 @@
66 #define ATOM_CMD_SETSCLK 0x0A
67 #define ATOM_CMD_SETMCLK 0x0B
68 #define ATOM_CMD_SETPCLK 0x0C
69+#define ATOM_CMD_SPDFANCNTL 0x39
70
71 #define ATOM_DATA_FWI_PTR 0xC
72 #define ATOM_DATA_IIO_PTR 0x32
73--
741.7.9.5
75
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch
new file mode 100644
index 00000000..2fc0804e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch
@@ -0,0 +1,40 @@
1From 17729a991754faddaeec8880db9881a5bc4fab5e Mon Sep 17 00:00:00 2001
2From: Anisse Astier <anisse@astier.eu>
3Date: Wed, 7 Mar 2012 18:36:35 +0100
4Subject: [PATCH 27/60] drm/i915: no-lvds quirk on MSI DC500
5
6commit 97effadb65ed08809e1720c8d3ee80b73a93665c upstream.
7
8This hardware doesn't have an LVDS, it's a desktop box. Fix incorrect
9LVDS detection.
10
11Signed-off-by: Anisse Astier <anisse@astier.eu>
12Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
13Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
17 1 file changed, 8 insertions(+)
18
19diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
20index b83f745..583c2d0 100644
21--- a/drivers/gpu/drm/i915/intel_lvds.c
22+++ b/drivers/gpu/drm/i915/intel_lvds.c
23@@ -731,6 +731,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
24 DMI_MATCH(DMI_BOARD_NAME, "AT5NM10T-I"),
25 },
26 },
27+ {
28+ .callback = intel_no_lvds_dmi_callback,
29+ .ident = "MSI Wind Box DC500",
30+ .matches = {
31+ DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
32+ DMI_MATCH(DMI_BOARD_NAME, "MS-7469"),
33+ },
34+ },
35
36 { } /* terminating entry */
37 };
38--
391.7.9.5
40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch
new file mode 100644
index 00000000..c70337ae
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch
@@ -0,0 +1,62 @@
1From 2bb2e47c60f77b768affa48bf847526054143d81 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Thu, 22 Mar 2012 15:00:50 +0000
4Subject: [PATCH 28/60] drm/i915: Sanitize BIOS debugging bits from PIPECONF
5
6commit f47166d2b0001fcb752b40c5a2d4db986dfbea68 upstream.
7
8Quoting the BSpec from time immemorial:
9
10 PIPEACONF, bits 28:27: Frame Start Delay (Debug)
11
12 Used to delay the frame start signal that is sent to the display planes.
13 Care must be taken to insure that there are enough lines during VBLANK
14 to support this setting.
15
16An instance of the BIOS leaving these bits set was found in the wild,
17where it caused our modesetting to go all squiffy and skewiff.
18
19Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47271
20Reported-and-tested-by: Eva Wang <evawang@linpus.com>
21Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43012
22Reported-and-tested-by: Carl Richell <carl@system76.com>
23Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
24Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 drivers/gpu/drm/i915/i915_reg.h | 1 +
28 drivers/gpu/drm/i915/intel_display.c | 6 ++++++
29 2 files changed, 7 insertions(+)
30
31diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
32index 1608d2a..2f99fd4 100644
33--- a/drivers/gpu/drm/i915/i915_reg.h
34+++ b/drivers/gpu/drm/i915/i915_reg.h
35@@ -2312,6 +2312,7 @@
36 #define PIPECONF_DISABLE 0
37 #define PIPECONF_DOUBLE_WIDE (1<<30)
38 #define I965_PIPECONF_ACTIVE (1<<30)
39+#define PIPECONF_FRAME_START_DELAY_MASK (3<<27)
40 #define PIPECONF_SINGLE_WIDE 0
41 #define PIPECONF_PIPE_UNLOCKED 0
42 #define PIPECONF_PIPE_LOCKED (1<<25)
43diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
44index 9ec9755..9011f48 100644
45--- a/drivers/gpu/drm/i915/intel_display.c
46+++ b/drivers/gpu/drm/i915/intel_display.c
47@@ -7278,6 +7278,12 @@ static void intel_sanitize_modesetting(struct drm_device *dev,
48 struct drm_i915_private *dev_priv = dev->dev_private;
49 u32 reg, val;
50
51+ /* Clear any frame start delays used for debugging left by the BIOS */
52+ for_each_pipe(pipe) {
53+ reg = PIPECONF(pipe);
54+ I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK);
55+ }
56+
57 if (HAS_PCH_SPLIT(dev))
58 return;
59
60--
611.7.9.5
62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch
new file mode 100644
index 00000000..72dd824c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch
@@ -0,0 +1,37 @@
1From 4ab7c0a9a8f866f035d64d0b71dc7cad9bf59f51 Mon Sep 17 00:00:00 2001
2From: Sean Paul <seanpaul@chromium.org>
3Date: Fri, 23 Mar 2012 08:52:58 -0400
4Subject: [PATCH 29/60] drm/i915: Add lock on drm_helper_resume_force_mode
5
6commit 927a2f119e8235238a2fc64871051b16c9bdae75 upstream.
7
8i915_drm_thaw was not locking the mode_config lock when calling
9drm_helper_resume_force_mode. When there were multiple wake sources,
10this caused FDI training failure on SNB which in turn corrupted the
11display.
12
13Signed-off-by: Sean Paul <seanpaul@chromium.org>
14Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
15Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/gpu/drm/i915/i915_drv.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
22index d04597d..e52b705 100644
23--- a/drivers/gpu/drm/i915/i915_drv.c
24+++ b/drivers/gpu/drm/i915/i915_drv.c
25@@ -508,7 +508,9 @@ static int i915_drm_thaw(struct drm_device *dev)
26 drm_irq_install(dev);
27
28 /* Resume the modeset for every activated CRTC */
29+ mutex_lock(&dev->mode_config.mutex);
30 drm_helper_resume_force_mode(dev);
31+ mutex_unlock(&dev->mode_config.mutex);
32
33 if (IS_IRONLAKE_M(dev))
34 ironlake_enable_rc6(dev);
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch
new file mode 100644
index 00000000..de8ad51e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch
@@ -0,0 +1,71 @@
1From 58767bacea3aca7d03afa92650f014213ef1681d Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Sat, 24 Mar 2012 23:51:30 +0100
4Subject: [PATCH 30/60] drm/i915: quirk away broken OpRegion VBT
5
6commit 25e341cfc33d94435472983825163e97fe370a6c upstream.
7
8Somehow the BIOS manages to screw things up when copying the VBT
9around, because the one we scrap from the VBIOS rom actually works.
10
11Tested-by: Markus Heinz <markus.heinz@uni-dortmund.de>
12Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
13Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
14Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=28812
15Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/gpu/drm/i915/intel_bios.c | 23 ++++++++++++++++++++++-
19 1 file changed, 22 insertions(+), 1 deletion(-)
20
21diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
22index 63880e2..22efb08 100644
23--- a/drivers/gpu/drm/i915/intel_bios.c
24+++ b/drivers/gpu/drm/i915/intel_bios.c
25@@ -24,6 +24,7 @@
26 * Eric Anholt <eric@anholt.net>
27 *
28 */
29+#include <linux/dmi.h>
30 #include <drm/drm_dp_helper.h>
31 #include "drmP.h"
32 #include "drm.h"
33@@ -621,6 +622,26 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
34 dev_priv->edp.bpp = 18;
35 }
36
37+static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id)
38+{
39+ DRM_DEBUG_KMS("Falling back to manually reading VBT from "
40+ "VBIOS ROM for %s\n",
41+ id->ident);
42+ return 1;
43+}
44+
45+static const struct dmi_system_id intel_no_opregion_vbt[] = {
46+ {
47+ .callback = intel_no_opregion_vbt_callback,
48+ .ident = "ThinkCentre A57",
49+ .matches = {
50+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
51+ DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"),
52+ },
53+ },
54+ { }
55+};
56+
57 /**
58 * intel_parse_bios - find VBT and initialize settings from the BIOS
59 * @dev: DRM device
60@@ -641,7 +662,7 @@ intel_parse_bios(struct drm_device *dev)
61 init_vbt_defaults(dev_priv);
62
63 /* XXX Should this validation be moved to intel_opregion.c? */
64- if (dev_priv->opregion.vbt) {
65+ if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt) {
66 struct vbt_header *vbt = dev_priv->opregion.vbt;
67 if (memcmp(vbt->signature, "$VBT", 4) == 0) {
68 DRM_DEBUG_KMS("Using VBT from OpRegion: %20s\n",
69--
701.7.9.5
71
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch
new file mode 100644
index 00000000..b246c48e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0031-r8169-runtime-resume-before-shutdown.patch
@@ -0,0 +1,57 @@
1From 5cc5bed22b5a987cd388292e64b2b4d473ddef10 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu@fr.zoreil.com>
3Date: Tue, 6 Mar 2012 01:14:12 +0000
4Subject: [PATCH 31/60] r8169: runtime resume before shutdown.
5
6commit 2a15cd2ff488a9fdb55e5e34060f499853b27c77 upstream.
7
8With runtime PM, if the ethernet cable is disconnected, the device is
9transitioned to D3 state to conserve energy. If the system is shutdown
10in this state, any register accesses in rtl_shutdown are dropped on
11the floor. As the device was programmed by .runtime_suspend() to wake
12on link changes, it is thus brought back up as soon as the link recovers.
13
14Resuming every suspended device through the driver core would slow things
15down and it is not clear how many devices really need it now.
16
17Original report and D0 transition patch by Sameer Nanda. Patch has been
18changed to comply with advices by Rafael J. Wysocki and the PM folks.
19
20Reported-by: Sameer Nanda <snanda@chromium.org>
21Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
22Cc: Rafael J. Wysocki <rjw@sisk.pl>
23Cc: Hayes Wang <hayeswang@realtek.com>
24Cc: Alan Stern <stern@rowland.harvard.edu>
25Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
26Signed-off-by: David S. Miller <davem@davemloft.net>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/net/ethernet/realtek/r8169.c | 5 +++++
30 1 file changed, 5 insertions(+)
31
32diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
33index 0cf2351..697cae3 100644
34--- a/drivers/net/ethernet/realtek/r8169.c
35+++ b/drivers/net/ethernet/realtek/r8169.c
36@@ -6194,6 +6194,9 @@ static void rtl_shutdown(struct pci_dev *pdev)
37 {
38 struct net_device *dev = pci_get_drvdata(pdev);
39 struct rtl8169_private *tp = netdev_priv(dev);
40+ struct device *d = &pdev->dev;
41+
42+ pm_runtime_get_sync(d);
43
44 rtl8169_net_suspend(dev);
45
46@@ -6215,6 +6218,8 @@ static void rtl_shutdown(struct pci_dev *pdev)
47 pci_wake_from_d3(pdev, true);
48 pci_set_power_state(pdev, PCI_D3hot);
49 }
50+
51+ pm_runtime_put_noidle(d);
52 }
53
54 static struct pci_driver rtl8169_pci_driver = {
55--
561.7.9.5
57
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch
new file mode 100644
index 00000000..40f2252e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch
@@ -0,0 +1,54 @@
1From a66bf3e98840599c67fd1d60563bb1aaa0c0622f Mon Sep 17 00:00:00 2001
2From: Martin Svec <martin.svec@zoner.cz>
3Date: Mon, 6 Feb 2012 22:13:25 -0800
4Subject: [PATCH 32/60] target: Fix unsupported WRITE_SAME sense payload
5
6commit 67236c44741e250199ccd77f1115568e68cf8848 upstream.
7
8This patch fixes a bug in target-core where unsupported WRITE_SAME ops
9from a target_check_write_same_discard() failure was incorrectly
10returning CHECK_CONDITION w/ TCM_INVALID_CDB_FIELD sense data.
11This was causing some clients to not properly fall back, so go ahead
12and use the correct TCM_UNSUPPORTED_SCSI_OPCODE sense for this case.
13
14Reported-by: Martin Svec <martin.svec@zoner.cz>
15Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/target/target_core_transport.c | 6 +++---
19 1 file changed, 3 insertions(+), 3 deletions(-)
20
21diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
22index cdb774b..5660916 100644
23--- a/drivers/target/target_core_transport.c
24+++ b/drivers/target/target_core_transport.c
25@@ -2666,7 +2666,7 @@ static int transport_generic_cmd_sequencer(
26 cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
27
28 if (target_check_write_same_discard(&cdb[10], dev) < 0)
29- goto out_invalid_cdb_field;
30+ goto out_unsupported_cdb;
31 if (!passthrough)
32 cmd->execute_task = target_emulate_write_same;
33 break;
34@@ -2949,7 +2949,7 @@ static int transport_generic_cmd_sequencer(
35 cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
36
37 if (target_check_write_same_discard(&cdb[1], dev) < 0)
38- goto out_invalid_cdb_field;
39+ goto out_unsupported_cdb;
40 if (!passthrough)
41 cmd->execute_task = target_emulate_write_same;
42 break;
43@@ -2972,7 +2972,7 @@ static int transport_generic_cmd_sequencer(
44 * of byte 1 bit 3 UNMAP instead of original reserved field
45 */
46 if (target_check_write_same_discard(&cdb[1], dev) < 0)
47- goto out_invalid_cdb_field;
48+ goto out_unsupported_cdb;
49 if (!passthrough)
50 cmd->execute_task = target_emulate_write_same;
51 break;
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch
new file mode 100644
index 00000000..310833f1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch
@@ -0,0 +1,180 @@
1From 69214d0d1b5f2f3e05dee62617d28c7e9daccc80 Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Wed, 21 Mar 2012 10:17:03 -0500
4Subject: [PATCH 33/60] kgdb,debug_core: pass the breakpoint struct instead of
5 address and memory
6
7commit 98b54aa1a2241b59372468bd1e9c2d207bdba54b upstream.
8
9There is extra state information that needs to be exposed in the
10kgdb_bpt structure for tracking how a breakpoint was installed. The
11debug_core only uses the the probe_kernel_write() to install
12breakpoints, but this is not enough for all the archs. Some arch such
13as x86 need to use text_poke() in order to install a breakpoint into a
14read only page.
15
16Passing the kgdb_bpt structure to kgdb_arch_set_breakpoint() and
17kgdb_arch_remove_breakpoint() allows other archs to set the type
18variable which indicates how the breakpoint was installed.
19
20Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 include/linux/kgdb.h | 4 ++--
24 kernel/debug/debug_core.c | 53 ++++++++++++++++++++-------------------------
25 2 files changed, 26 insertions(+), 31 deletions(-)
26
27diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
28index fa39183..e5d689c 100644
29--- a/include/linux/kgdb.h
30+++ b/include/linux/kgdb.h
31@@ -207,8 +207,8 @@ extern void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc);
32
33 /* Optional functions. */
34 extern int kgdb_validate_break_address(unsigned long addr);
35-extern int kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr);
36-extern int kgdb_arch_remove_breakpoint(unsigned long addr, char *bundle);
37+extern int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt);
38+extern int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt);
39
40 /**
41 * kgdb_arch_late - Perform any architecture specific initalization.
42diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
43index 0d7c087..7fda904 100644
44--- a/kernel/debug/debug_core.c
45+++ b/kernel/debug/debug_core.c
46@@ -157,37 +157,39 @@ early_param("nokgdbroundup", opt_nokgdbroundup);
47 * Weak aliases for breakpoint management,
48 * can be overriden by architectures when needed:
49 */
50-int __weak kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr)
51+int __weak kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
52 {
53 int err;
54
55- err = probe_kernel_read(saved_instr, (char *)addr, BREAK_INSTR_SIZE);
56+ err = probe_kernel_read(bpt->saved_instr, (char *)bpt->bpt_addr,
57+ BREAK_INSTR_SIZE);
58 if (err)
59 return err;
60-
61- return probe_kernel_write((char *)addr, arch_kgdb_ops.gdb_bpt_instr,
62- BREAK_INSTR_SIZE);
63+ err = probe_kernel_write((char *)bpt->bpt_addr,
64+ arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
65+ return err;
66 }
67
68-int __weak kgdb_arch_remove_breakpoint(unsigned long addr, char *bundle)
69+int __weak kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
70 {
71- return probe_kernel_write((char *)addr,
72- (char *)bundle, BREAK_INSTR_SIZE);
73+ return probe_kernel_write((char *)bpt->bpt_addr,
74+ (char *)bpt->saved_instr, BREAK_INSTR_SIZE);
75 }
76
77 int __weak kgdb_validate_break_address(unsigned long addr)
78 {
79- char tmp_variable[BREAK_INSTR_SIZE];
80+ struct kgdb_bkpt tmp;
81 int err;
82- /* Validate setting the breakpoint and then removing it. In the
83+ /* Validate setting the breakpoint and then removing it. If the
84 * remove fails, the kernel needs to emit a bad message because we
85 * are deep trouble not being able to put things back the way we
86 * found them.
87 */
88- err = kgdb_arch_set_breakpoint(addr, tmp_variable);
89+ tmp.bpt_addr = addr;
90+ err = kgdb_arch_set_breakpoint(&tmp);
91 if (err)
92 return err;
93- err = kgdb_arch_remove_breakpoint(addr, tmp_variable);
94+ err = kgdb_arch_remove_breakpoint(&tmp);
95 if (err)
96 printk(KERN_ERR "KGDB: Critical breakpoint error, kernel "
97 "memory destroyed at: %lx", addr);
98@@ -231,7 +233,6 @@ static void kgdb_flush_swbreak_addr(unsigned long addr)
99 */
100 int dbg_activate_sw_breakpoints(void)
101 {
102- unsigned long addr;
103 int error;
104 int ret = 0;
105 int i;
106@@ -240,16 +241,15 @@ int dbg_activate_sw_breakpoints(void)
107 if (kgdb_break[i].state != BP_SET)
108 continue;
109
110- addr = kgdb_break[i].bpt_addr;
111- error = kgdb_arch_set_breakpoint(addr,
112- kgdb_break[i].saved_instr);
113+ error = kgdb_arch_set_breakpoint(&kgdb_break[i]);
114 if (error) {
115 ret = error;
116- printk(KERN_INFO "KGDB: BP install failed: %lx", addr);
117+ printk(KERN_INFO "KGDB: BP install failed: %lx",
118+ kgdb_break[i].bpt_addr);
119 continue;
120 }
121
122- kgdb_flush_swbreak_addr(addr);
123+ kgdb_flush_swbreak_addr(kgdb_break[i].bpt_addr);
124 kgdb_break[i].state = BP_ACTIVE;
125 }
126 return ret;
127@@ -298,7 +298,6 @@ int dbg_set_sw_break(unsigned long addr)
128
129 int dbg_deactivate_sw_breakpoints(void)
130 {
131- unsigned long addr;
132 int error;
133 int ret = 0;
134 int i;
135@@ -306,15 +305,14 @@ int dbg_deactivate_sw_breakpoints(void)
136 for (i = 0; i < KGDB_MAX_BREAKPOINTS; i++) {
137 if (kgdb_break[i].state != BP_ACTIVE)
138 continue;
139- addr = kgdb_break[i].bpt_addr;
140- error = kgdb_arch_remove_breakpoint(addr,
141- kgdb_break[i].saved_instr);
142+ error = kgdb_arch_remove_breakpoint(&kgdb_break[i]);
143 if (error) {
144- printk(KERN_INFO "KGDB: BP remove failed: %lx\n", addr);
145+ printk(KERN_INFO "KGDB: BP remove failed: %lx\n",
146+ kgdb_break[i].bpt_addr);
147 ret = error;
148 }
149
150- kgdb_flush_swbreak_addr(addr);
151+ kgdb_flush_swbreak_addr(kgdb_break[i].bpt_addr);
152 kgdb_break[i].state = BP_SET;
153 }
154 return ret;
155@@ -348,7 +346,6 @@ int kgdb_isremovedbreak(unsigned long addr)
156
157 int dbg_remove_all_break(void)
158 {
159- unsigned long addr;
160 int error;
161 int i;
162
163@@ -356,12 +353,10 @@ int dbg_remove_all_break(void)
164 for (i = 0; i < KGDB_MAX_BREAKPOINTS; i++) {
165 if (kgdb_break[i].state != BP_ACTIVE)
166 goto setundefined;
167- addr = kgdb_break[i].bpt_addr;
168- error = kgdb_arch_remove_breakpoint(addr,
169- kgdb_break[i].saved_instr);
170+ error = kgdb_arch_remove_breakpoint(&kgdb_break[i]);
171 if (error)
172 printk(KERN_ERR "KGDB: breakpoint remove failed: %lx\n",
173- addr);
174+ kgdb_break[i].bpt_addr);
175 setundefined:
176 kgdb_break[i].state = BP_UNDEFINED;
177 }
178--
1791.7.9.5
180
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch
new file mode 100644
index 00000000..38e88f17
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch
@@ -0,0 +1,121 @@
1From 0c2fe32a76d9c3ab88685250abe3956f2ff555fe Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Thu, 29 Mar 2012 06:55:44 -0500
4Subject: [PATCH 34/60] kgdbts: Fix kernel oops with CONFIG_DEBUG_RODATA
5
6commit 456ca7ff24841bf2d2a2dfd690fe7d42ef70d932 upstream.
7
8On x86 the kgdb test suite will oops when the kernel is compiled with
9CONFIG_DEBUG_RODATA and you run the tests after boot time. This is
10regression has existed since 2.6.26 by commit: b33cb815 (kgdbts: Use
11HW breakpoints with CONFIG_DEBUG_RODATA).
12
13The test suite can use hw breakpoints for all the tests, but it has to
14execute the hardware breakpoint specific tests first in order to
15determine that the hw breakpoints actually work. Specifically the
16very first test causes an oops:
17
18# echo V1I1 > /sys/module/kgdbts/parameters/kgdbts
19kgdb: Registered I/O driver kgdbts.
20kgdbts:RUN plant and detach test
21
22Entering kdb (current=0xffff880017aa9320, pid 1078) on processor 0 due to Keyboard Entry
23[0]kdb> kgdbts: ERROR PUT: end of test buffer on 'plant_and_detach_test' line 1 expected OK got $E14#aa
24WARNING: at drivers/misc/kgdbts.c:730 run_simple_test+0x151/0x2c0()
25[...oops clipped...]
26
27This commit re-orders the running of the tests and puts the RODATA
28check into its own function so as to correctly avoid the kernel oops
29by detecting and using the hw breakpoints.
30
31Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
32Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33---
34 drivers/misc/kgdbts.c | 52 ++++++++++++++++++++++++++-----------------------
35 1 file changed, 28 insertions(+), 24 deletions(-)
36
37diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
38index 3f7ad83..997e94d 100644
39--- a/drivers/misc/kgdbts.c
40+++ b/drivers/misc/kgdbts.c
41@@ -885,6 +885,22 @@ static void run_singlestep_break_test(void)
42 kgdbts_break_test();
43 }
44
45+static void test_debug_rodata(void)
46+{
47+#ifdef CONFIG_DEBUG_RODATA
48+ /* Until there is an api to write to read-only text segments, use
49+ * HW breakpoints for the remainder of any tests, else print a
50+ * failure message if hw breakpoints do not work.
51+ */
52+ if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
53+ eprintk("kgdbts: HW breakpoints BROKEN, ending tests\n");
54+ return;
55+ }
56+ force_hwbrks = 1;
57+ v1printk("kgdbts:Using HW breakpoints for SW breakpoint tests\n");
58+#endif /* CONFIG_DEBUG_RODATA */
59+}
60+
61 static void kgdbts_run_tests(void)
62 {
63 char *ptr;
64@@ -907,6 +923,18 @@ static void kgdbts_run_tests(void)
65 if (ptr)
66 sstep_test = simple_strtol(ptr+1, NULL, 10);
67
68+ /* All HW break point tests */
69+ if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
70+ hwbreaks_ok = 1;
71+ v1printk("kgdbts:RUN hw breakpoint test\n");
72+ run_breakpoint_test(1);
73+ v1printk("kgdbts:RUN hw write breakpoint test\n");
74+ run_hw_break_test(1);
75+ v1printk("kgdbts:RUN access write breakpoint test\n");
76+ run_hw_break_test(0);
77+ }
78+ test_debug_rodata();
79+
80 /* required internal KGDB tests */
81 v1printk("kgdbts:RUN plant and detach test\n");
82 run_plant_and_detach_test(0);
83@@ -924,35 +952,11 @@ static void kgdbts_run_tests(void)
84
85 /* ===Optional tests=== */
86
87- /* All HW break point tests */
88- if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
89- hwbreaks_ok = 1;
90- v1printk("kgdbts:RUN hw breakpoint test\n");
91- run_breakpoint_test(1);
92- v1printk("kgdbts:RUN hw write breakpoint test\n");
93- run_hw_break_test(1);
94- v1printk("kgdbts:RUN access write breakpoint test\n");
95- run_hw_break_test(0);
96- }
97-
98 if (nmi_sleep) {
99 v1printk("kgdbts:RUN NMI sleep %i seconds test\n", nmi_sleep);
100 run_nmi_sleep_test(nmi_sleep);
101 }
102
103-#ifdef CONFIG_DEBUG_RODATA
104- /* Until there is an api to write to read-only text segments, use
105- * HW breakpoints for the remainder of any tests, else print a
106- * failure message if hw breakpoints do not work.
107- */
108- if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
109- eprintk("kgdbts: HW breakpoints do not work,"
110- "skipping remaining tests\n");
111- return;
112- }
113- force_hwbrks = 1;
114-#endif /* CONFIG_DEBUG_RODATA */
115-
116 /* If the do_fork test is run it will be the last test that is
117 * executed because a kernel thread will be spawned at the very
118 * end to unregister the debug hooks.
119--
1201.7.9.5
121
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch
new file mode 100644
index 00000000..d28b70c2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch
@@ -0,0 +1,212 @@
1From ae549aeda351058e0df140fd174ac71911773ece Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Thu, 29 Mar 2012 17:41:24 -0500
4Subject: [PATCH 35/60] kgdbts: (1 of 2) fix single step awareness to work
5 correctly with SMP
6
7commit 486c5987a00a89d56c2c04c506417ef8f823ca2e upstream.
8
9The do_fork and sys_open tests have never worked properly on anything
10other than a UP configuration with the kgdb test suite. This is
11because the test suite did not fully implement the behavior of a real
12debugger. A real debugger tracks the state of what thread it asked to
13single step and can correctly continue other threads of execution or
14conditionally stop while waiting for the original thread single step
15request to return.
16
17Below is a simple method to cause a fatal kernel oops with the kgdb
18test suite on a 4 processor x86 system:
19
20while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
21while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
22while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
23while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
24echo V1I1F1000 > /sys/module/kgdbts/parameters/kgdbts
25
26Very soon after starting the test the kernel will oops with a message like:
27
28kgdbts: BP mismatch 3b7da66480 expected ffffffff8106a590
29WARNING: at drivers/misc/kgdbts.c:303 check_and_rewind_pc+0xe0/0x100()
30Call Trace:
31 [<ffffffff812994a0>] check_and_rewind_pc+0xe0/0x100
32 [<ffffffff81298945>] validate_simple_test+0x25/0xc0
33 [<ffffffff81298f77>] run_simple_test+0x107/0x2c0
34 [<ffffffff81298a18>] kgdbts_put_char+0x18/0x20
35
36The warn will turn to a hard kernel crash shortly after that because
37the pc will not get properly rewound to the right value after hitting
38a breakpoint leading to a hard lockup.
39
40This change is broken up into 2 pieces because archs that have hw
41single stepping (2.6.26 and up) need different changes than archs that
42do not have hw single stepping (3.0 and up). This change implements
43the correct behavior for an arch that supports hw single stepping.
44
45A minor defect was fixed where sys_open should be do_sys_open
46for the sys_open break point test. This solves the problem of running
47a 64 bit with a 32 bit user space. The sys_open() never gets called
48when using the 32 bit file system for the kgdb testsuite because the
4932 bit binaries invoke the compat_sys_open() call leading to the test
50never completing.
51
52In order to mimic a real debugger, the kgdb test suite now tracks the
53most recent thread that was continued (cont_thread_id), with the
54intent to single step just this thread. When the response to the
55single step request stops in a different thread that hit the original
56break point that thread will now get continued, while the debugger
57waits for the thread with the single step pending. Here is a high
58level description of the sequence of events.
59
60 cont_instead_of_sstep = 0;
61
621) set breakpoint at do_fork
632) continue
643) Save the thread id where we stop to cont_thread_id
654) Remove breakpoint at do_fork
665) Reset the PC if needed depending on kernel exception type
676) if (cont_instead_of_sstep) { continue } else { single step }
687) Check where we stopped
69 if current thread != cont_thread_id {
70 cont_instead_of_sstep = 1;
71 goto step 5
72 } else {
73 cont_instead_of_sstep = 0;
74 }
758) clean up and run test again if needed
76
77Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
78Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
79---
80 drivers/misc/kgdbts.c | 54 +++++++++++++++++++++++++++++++++++++++----------
81 1 file changed, 43 insertions(+), 11 deletions(-)
82
83diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
84index 997e94d..3cad9fc 100644
85--- a/drivers/misc/kgdbts.c
86+++ b/drivers/misc/kgdbts.c
87@@ -134,6 +134,9 @@ static int force_hwbrks;
88 static int hwbreaks_ok;
89 static int hw_break_val;
90 static int hw_break_val2;
91+static int cont_instead_of_sstep;
92+static unsigned long cont_thread_id;
93+static unsigned long sstep_thread_id;
94 #if defined(CONFIG_ARM) || defined(CONFIG_MIPS) || defined(CONFIG_SPARC)
95 static int arch_needs_sstep_emulation = 1;
96 #else
97@@ -211,7 +214,7 @@ static unsigned long lookup_addr(char *arg)
98 if (!strcmp(arg, "kgdbts_break_test"))
99 addr = (unsigned long)kgdbts_break_test;
100 else if (!strcmp(arg, "sys_open"))
101- addr = (unsigned long)sys_open;
102+ addr = (unsigned long)do_sys_open;
103 else if (!strcmp(arg, "do_fork"))
104 addr = (unsigned long)do_fork;
105 else if (!strcmp(arg, "hw_break_val"))
106@@ -283,6 +286,16 @@ static void hw_break_val_write(void)
107 hw_break_val++;
108 }
109
110+static int get_thread_id_continue(char *put_str, char *arg)
111+{
112+ char *ptr = &put_str[11];
113+
114+ if (put_str[1] != 'T' || put_str[2] != '0')
115+ return 1;
116+ kgdb_hex2long(&ptr, &cont_thread_id);
117+ return 0;
118+}
119+
120 static int check_and_rewind_pc(char *put_str, char *arg)
121 {
122 unsigned long addr = lookup_addr(arg);
123@@ -324,6 +337,18 @@ static int check_single_step(char *put_str, char *arg)
124 gdb_regs_to_pt_regs(kgdbts_gdb_regs, &kgdbts_regs);
125 v2printk("Singlestep stopped at IP: %lx\n",
126 instruction_pointer(&kgdbts_regs));
127+
128+ if (sstep_thread_id != cont_thread_id && !arch_needs_sstep_emulation) {
129+ /*
130+ * Ensure we stopped in the same thread id as before, else the
131+ * debugger should continue until the original thread that was
132+ * single stepped is scheduled again, emulating gdb's behavior.
133+ */
134+ v2printk("ThrID does not match: %lx\n", cont_thread_id);
135+ cont_instead_of_sstep = 1;
136+ ts.idx -= 4;
137+ return 0;
138+ }
139 if (instruction_pointer(&kgdbts_regs) == addr) {
140 eprintk("kgdbts: SingleStep failed at %lx\n",
141 instruction_pointer(&kgdbts_regs));
142@@ -368,7 +393,12 @@ static int got_break(char *put_str, char *arg)
143 static void emul_sstep_get(char *arg)
144 {
145 if (!arch_needs_sstep_emulation) {
146- fill_get_buf(arg);
147+ if (cont_instead_of_sstep) {
148+ cont_instead_of_sstep = 0;
149+ fill_get_buf("c");
150+ } else {
151+ fill_get_buf(arg);
152+ }
153 return;
154 }
155 switch (sstep_state) {
156@@ -398,9 +428,11 @@ static void emul_sstep_get(char *arg)
157 static int emul_sstep_put(char *put_str, char *arg)
158 {
159 if (!arch_needs_sstep_emulation) {
160- if (!strncmp(put_str+1, arg, 2))
161- return 0;
162- return 1;
163+ char *ptr = &put_str[11];
164+ if (put_str[1] != 'T' || put_str[2] != '0')
165+ return 1;
166+ kgdb_hex2long(&ptr, &sstep_thread_id);
167+ return 0;
168 }
169 switch (sstep_state) {
170 case 1:
171@@ -502,10 +534,10 @@ static struct test_struct bad_read_test[] = {
172 static struct test_struct singlestep_break_test[] = {
173 { "?", "S0*" }, /* Clear break points */
174 { "kgdbts_break_test", "OK", sw_break, }, /* set sw breakpoint */
175- { "c", "T0*", }, /* Continue */
176+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
177+ { "kgdbts_break_test", "OK", sw_rem_break }, /*remove breakpoint */
178 { "g", "kgdbts_break_test", NULL, check_and_rewind_pc },
179 { "write", "OK", write_regs }, /* Write registers */
180- { "kgdbts_break_test", "OK", sw_rem_break }, /*remove breakpoint */
181 { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
182 { "g", "kgdbts_break_test", NULL, check_single_step },
183 { "kgdbts_break_test", "OK", sw_break, }, /* set sw breakpoint */
184@@ -523,10 +555,10 @@ static struct test_struct singlestep_break_test[] = {
185 static struct test_struct do_fork_test[] = {
186 { "?", "S0*" }, /* Clear break points */
187 { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
188- { "c", "T0*", }, /* Continue */
189+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
190+ { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
191 { "g", "do_fork", NULL, check_and_rewind_pc }, /* check location */
192 { "write", "OK", write_regs }, /* Write registers */
193- { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
194 { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
195 { "g", "do_fork", NULL, check_single_step },
196 { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
197@@ -541,10 +573,10 @@ static struct test_struct do_fork_test[] = {
198 static struct test_struct sys_open_test[] = {
199 { "?", "S0*" }, /* Clear break points */
200 { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
201- { "c", "T0*", }, /* Continue */
202+ { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
203+ { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
204 { "g", "sys_open", NULL, check_and_rewind_pc }, /* check location */
205 { "write", "OK", write_regs }, /* Write registers */
206- { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
207 { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
208 { "g", "sys_open", NULL, check_single_step },
209 { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
210--
2111.7.9.5
212
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch
new file mode 100644
index 00000000..640bc3e8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch
@@ -0,0 +1,266 @@
1From 13053c284b41d7ca50da37f04c9940303b9d33e0 Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Thu, 29 Mar 2012 17:41:24 -0500
4Subject: [PATCH 36/60] kgdbts: (2 of 2) fix single step awareness to work
5 correctly with SMP
6
7commit 23bbd8e346f1ef3fc1219c79cea53d8d52b207d8 upstream.
8
9The do_fork and sys_open tests have never worked properly on anything
10other than a UP configuration with the kgdb test suite. This is
11because the test suite did not fully implement the behavior of a real
12debugger. A real debugger tracks the state of what thread it asked to
13single step and can correctly continue other threads of execution or
14conditionally stop while waiting for the original thread single step
15request to return.
16
17Below is a simple method to cause a fatal kernel oops with the kgdb
18test suite on a 2 processor ARM system:
19
20while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
21while [ 1 ] ; do ls > /dev/null 2> /dev/null; done&
22echo V1I1F100 > /sys/module/kgdbts/parameters/kgdbts
23
24Very soon after starting the test the kernel will start warning with
25messages like:
26
27kgdbts: BP mismatch c002487c expected c0024878
28------------[ cut here ]------------
29WARNING: at drivers/misc/kgdbts.c:317 check_and_rewind_pc+0x9c/0xc4()
30[<c01f6520>] (check_and_rewind_pc+0x9c/0xc4)
31[<c01f595c>] (validate_simple_test+0x3c/0xc4)
32[<c01f60d4>] (run_simple_test+0x1e8/0x274)
33
34The kernel will eventually recovers, but the test suite has completely
35failed to test anything useful.
36
37This patch implements behavior similar to a real debugger that does
38not rely on hardware single stepping by using only software planted
39breakpoints.
40
41In order to mimic a real debugger, the kgdb test suite now tracks the
42most recent thread that was continued (cont_thread_id), with the
43intent to single step just this thread. When the response to the
44single step request stops in a different thread that hit the original
45break point that thread will now get continued, while the debugger
46waits for the thread with the single step pending. Here is a high
47level description of the sequence of events.
48
49 cont_instead_of_sstep = 0;
50
511) set breakpoint at do_fork
522) continue
533) Save the thread id where we stop to cont_thread_id
544) Remove breakpoint at do_fork
555) Reset the PC if needed depending on kernel exception type
566) soft single step
577) Check where we stopped
58 if current thread != cont_thread_id {
59 if (here for more than 2 times for the same thead) {
60 ### must be a really busy system, start test again ###
61 goto step 1
62 }
63 goto step 5
64 } else {
65 cont_instead_of_sstep = 0;
66 }
678) clean up and run test again if needed
689) Clear out any threads that were waiting on a break point at the
69 point in time the test is ended with get_cont_catch(). This
70 happens sometimes because breakpoints are used in place of single
71 stepping and some threads could have been in the debugger exception
72 handling queue because breakpoints were hit concurrently on
73 different CPUs. This also means we wait at least one second before
74 unplumbing the debugger connection at the very end, so as respond
75 to any debug threads waiting to be serviced.
76
77Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
78Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
79---
80 drivers/misc/kgdbts.c | 73 +++++++++++++++++++++++++++++++++++++++++--------
81 1 file changed, 62 insertions(+), 11 deletions(-)
82
83diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
84index 3cad9fc..d087456 100644
85--- a/drivers/misc/kgdbts.c
86+++ b/drivers/misc/kgdbts.c
87@@ -142,7 +142,9 @@ static int arch_needs_sstep_emulation = 1;
88 #else
89 static int arch_needs_sstep_emulation;
90 #endif
91+static unsigned long cont_addr;
92 static unsigned long sstep_addr;
93+static int restart_from_top_after_write;
94 static int sstep_state;
95
96 /* Storage for the registers, in GDB format. */
97@@ -190,7 +192,8 @@ static int kgdbts_unreg_thread(void *ptr)
98 */
99 while (!final_ack)
100 msleep_interruptible(1500);
101-
102+ /* Pause for any other threads to exit after final ack. */
103+ msleep_interruptible(1000);
104 if (configured)
105 kgdb_unregister_io_module(&kgdbts_io_ops);
106 configured = 0;
107@@ -312,13 +315,21 @@ static int check_and_rewind_pc(char *put_str, char *arg)
108 if (addr + BREAK_INSTR_SIZE == ip)
109 offset = -BREAK_INSTR_SIZE;
110 #endif
111- if (strcmp(arg, "silent") && ip + offset != addr) {
112+
113+ if (arch_needs_sstep_emulation && sstep_addr &&
114+ ip + offset == sstep_addr &&
115+ ((!strcmp(arg, "sys_open") || !strcmp(arg, "do_fork")))) {
116+ /* This is special case for emulated single step */
117+ v2printk("Emul: rewind hit single step bp\n");
118+ restart_from_top_after_write = 1;
119+ } else if (strcmp(arg, "silent") && ip + offset != addr) {
120 eprintk("kgdbts: BP mismatch %lx expected %lx\n",
121 ip + offset, addr);
122 return 1;
123 }
124 /* Readjust the instruction pointer if needed */
125 ip += offset;
126+ cont_addr = ip;
127 #ifdef GDB_ADJUSTS_BREAK_OFFSET
128 instruction_pointer_set(&kgdbts_regs, ip);
129 #endif
130@@ -328,6 +339,8 @@ static int check_and_rewind_pc(char *put_str, char *arg)
131 static int check_single_step(char *put_str, char *arg)
132 {
133 unsigned long addr = lookup_addr(arg);
134+ static int matched_id;
135+
136 /*
137 * From an arch indepent point of view the instruction pointer
138 * should be on a different instruction
139@@ -338,17 +351,28 @@ static int check_single_step(char *put_str, char *arg)
140 v2printk("Singlestep stopped at IP: %lx\n",
141 instruction_pointer(&kgdbts_regs));
142
143- if (sstep_thread_id != cont_thread_id && !arch_needs_sstep_emulation) {
144+ if (sstep_thread_id != cont_thread_id) {
145 /*
146 * Ensure we stopped in the same thread id as before, else the
147 * debugger should continue until the original thread that was
148 * single stepped is scheduled again, emulating gdb's behavior.
149 */
150 v2printk("ThrID does not match: %lx\n", cont_thread_id);
151+ if (arch_needs_sstep_emulation) {
152+ if (matched_id &&
153+ instruction_pointer(&kgdbts_regs) != addr)
154+ goto continue_test;
155+ matched_id++;
156+ ts.idx -= 2;
157+ sstep_state = 0;
158+ return 0;
159+ }
160 cont_instead_of_sstep = 1;
161 ts.idx -= 4;
162 return 0;
163 }
164+continue_test:
165+ matched_id = 0;
166 if (instruction_pointer(&kgdbts_regs) == addr) {
167 eprintk("kgdbts: SingleStep failed at %lx\n",
168 instruction_pointer(&kgdbts_regs));
169@@ -390,6 +414,31 @@ static int got_break(char *put_str, char *arg)
170 return 1;
171 }
172
173+static void get_cont_catch(char *arg)
174+{
175+ /* Always send detach because the test is completed at this point */
176+ fill_get_buf("D");
177+}
178+
179+static int put_cont_catch(char *put_str, char *arg)
180+{
181+ /* This is at the end of the test and we catch any and all input */
182+ v2printk("kgdbts: cleanup task: %lx\n", sstep_thread_id);
183+ ts.idx--;
184+ return 0;
185+}
186+
187+static int emul_reset(char *put_str, char *arg)
188+{
189+ if (strncmp(put_str, "$OK", 3))
190+ return 1;
191+ if (restart_from_top_after_write) {
192+ restart_from_top_after_write = 0;
193+ ts.idx = -1;
194+ }
195+ return 0;
196+}
197+
198 static void emul_sstep_get(char *arg)
199 {
200 if (!arch_needs_sstep_emulation) {
201@@ -443,8 +492,7 @@ static int emul_sstep_put(char *put_str, char *arg)
202 v2printk("Stopped at IP: %lx\n",
203 instruction_pointer(&kgdbts_regs));
204 /* Want to stop at IP + break instruction size by default */
205- sstep_addr = instruction_pointer(&kgdbts_regs) +
206- BREAK_INSTR_SIZE;
207+ sstep_addr = cont_addr + BREAK_INSTR_SIZE;
208 break;
209 case 2:
210 if (strncmp(put_str, "$OK", 3)) {
211@@ -456,6 +504,9 @@ static int emul_sstep_put(char *put_str, char *arg)
212 if (strncmp(put_str, "$T0", 3)) {
213 eprintk("kgdbts: failed continue sstep\n");
214 return 1;
215+ } else {
216+ char *ptr = &put_str[11];
217+ kgdb_hex2long(&ptr, &sstep_thread_id);
218 }
219 break;
220 case 4:
221@@ -558,13 +609,13 @@ static struct test_struct do_fork_test[] = {
222 { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
223 { "do_fork", "OK", sw_rem_break }, /*remove breakpoint */
224 { "g", "do_fork", NULL, check_and_rewind_pc }, /* check location */
225- { "write", "OK", write_regs }, /* Write registers */
226+ { "write", "OK", write_regs, emul_reset }, /* Write registers */
227 { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
228 { "g", "do_fork", NULL, check_single_step },
229 { "do_fork", "OK", sw_break, }, /* set sw breakpoint */
230 { "7", "T0*", skip_back_repeat_test }, /* Loop based on repeat_test */
231 { "D", "OK", NULL, final_ack_set }, /* detach and unregister I/O */
232- { "", "" },
233+ { "", "", get_cont_catch, put_cont_catch },
234 };
235
236 /* Test for hitting a breakpoint at sys_open for what ever the number
237@@ -576,13 +627,13 @@ static struct test_struct sys_open_test[] = {
238 { "c", "T0*", NULL, get_thread_id_continue }, /* Continue */
239 { "sys_open", "OK", sw_rem_break }, /*remove breakpoint */
240 { "g", "sys_open", NULL, check_and_rewind_pc }, /* check location */
241- { "write", "OK", write_regs }, /* Write registers */
242+ { "write", "OK", write_regs, emul_reset }, /* Write registers */
243 { "s", "T0*", emul_sstep_get, emul_sstep_put }, /* Single step */
244 { "g", "sys_open", NULL, check_single_step },
245 { "sys_open", "OK", sw_break, }, /* set sw breakpoint */
246 { "7", "T0*", skip_back_repeat_test }, /* Loop based on repeat_test */
247 { "D", "OK", NULL, final_ack_set }, /* detach and unregister I/O */
248- { "", "" },
249+ { "", "", get_cont_catch, put_cont_catch },
250 };
251
252 /*
253@@ -725,8 +776,8 @@ static int run_simple_test(int is_get_char, int chr)
254 /* This callback is a put char which is when kgdb sends data to
255 * this I/O module.
256 */
257- if (ts.tst[ts.idx].get[0] == '\0' &&
258- ts.tst[ts.idx].put[0] == '\0') {
259+ if (ts.tst[ts.idx].get[0] == '\0' && ts.tst[ts.idx].put[0] == '\0' &&
260+ !ts.tst[ts.idx].get_handler) {
261 eprintk("kgdbts: ERROR: beyond end of test on"
262 " '%s' line %i\n", ts.name, ts.idx);
263 return 0;
264--
2651.7.9.5
266
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch
new file mode 100644
index 00000000..be073987
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch
@@ -0,0 +1,166 @@
1From d3b769924c0a3a98809ab60e0f7449fef154b26c Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Fri, 23 Mar 2012 09:35:05 -0500
4Subject: [PATCH 37/60] x86,kgdb: Fix DEBUG_RODATA limitation using
5 text_poke()
6
7commit 3751d3e85cf693e10e2c47c03c8caa65e171099b upstream.
8
9There has long been a limitation using software breakpoints with a
10kernel compiled with CONFIG_DEBUG_RODATA going back to 2.6.26. For
11this particular patch, it will apply cleanly and has been tested all
12the way back to 2.6.36.
13
14The kprobes code uses the text_poke() function which accommodates
15writing a breakpoint into a read-only page. The x86 kgdb code can
16solve the problem similarly by overriding the default breakpoint
17set/remove routines and using text_poke() directly.
18
19The x86 kgdb code will first attempt to use the traditional
20probe_kernel_write(), and next try using a the text_poke() function.
21The break point install method is tracked such that the correct break
22point removal routine will get called later on.
23
24Cc: x86@kernel.org
25Cc: Thomas Gleixner <tglx@linutronix.de>
26Cc: Ingo Molnar <mingo@redhat.com>
27Cc: H. Peter Anvin <hpa@zytor.com>
28Inspried-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
29Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 arch/x86/kernel/kgdb.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
33 drivers/misc/kgdbts.c | 17 --------------
34 include/linux/kgdb.h | 3 ++-
35 3 files changed, 62 insertions(+), 18 deletions(-)
36
37diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
38index faba577..2f45c4c 100644
39--- a/arch/x86/kernel/kgdb.c
40+++ b/arch/x86/kernel/kgdb.c
41@@ -43,6 +43,8 @@
42 #include <linux/smp.h>
43 #include <linux/nmi.h>
44 #include <linux/hw_breakpoint.h>
45+#include <linux/uaccess.h>
46+#include <linux/memory.h>
47
48 #include <asm/debugreg.h>
49 #include <asm/apicdef.h>
50@@ -740,6 +742,64 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip)
51 regs->ip = ip;
52 }
53
54+int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
55+{
56+ int err;
57+ char opc[BREAK_INSTR_SIZE];
58+
59+ bpt->type = BP_BREAKPOINT;
60+ err = probe_kernel_read(bpt->saved_instr, (char *)bpt->bpt_addr,
61+ BREAK_INSTR_SIZE);
62+ if (err)
63+ return err;
64+ err = probe_kernel_write((char *)bpt->bpt_addr,
65+ arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
66+#ifdef CONFIG_DEBUG_RODATA
67+ if (!err)
68+ return err;
69+ /*
70+ * It is safe to call text_poke() because normal kernel execution
71+ * is stopped on all cores, so long as the text_mutex is not locked.
72+ */
73+ if (mutex_is_locked(&text_mutex))
74+ return -EBUSY;
75+ text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr,
76+ BREAK_INSTR_SIZE);
77+ err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
78+ if (err)
79+ return err;
80+ if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE))
81+ return -EINVAL;
82+ bpt->type = BP_POKE_BREAKPOINT;
83+#endif /* CONFIG_DEBUG_RODATA */
84+ return err;
85+}
86+
87+int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
88+{
89+#ifdef CONFIG_DEBUG_RODATA
90+ int err;
91+ char opc[BREAK_INSTR_SIZE];
92+
93+ if (bpt->type != BP_POKE_BREAKPOINT)
94+ goto knl_write;
95+ /*
96+ * It is safe to call text_poke() because normal kernel execution
97+ * is stopped on all cores, so long as the text_mutex is not locked.
98+ */
99+ if (mutex_is_locked(&text_mutex))
100+ goto knl_write;
101+ text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE);
102+ err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
103+ if (err || memcmp(opc, bpt->saved_instr, BREAK_INSTR_SIZE))
104+ goto knl_write;
105+ return err;
106+knl_write:
107+#endif /* CONFIG_DEBUG_RODATA */
108+ return probe_kernel_write((char *)bpt->bpt_addr,
109+ (char *)bpt->saved_instr, BREAK_INSTR_SIZE);
110+}
111+
112 struct kgdb_arch arch_kgdb_ops = {
113 /* Breakpoint instruction: */
114 .gdb_bpt_instr = { 0xcc },
115diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
116index d087456..3aa9a96 100644
117--- a/drivers/misc/kgdbts.c
118+++ b/drivers/misc/kgdbts.c
119@@ -968,22 +968,6 @@ static void run_singlestep_break_test(void)
120 kgdbts_break_test();
121 }
122
123-static void test_debug_rodata(void)
124-{
125-#ifdef CONFIG_DEBUG_RODATA
126- /* Until there is an api to write to read-only text segments, use
127- * HW breakpoints for the remainder of any tests, else print a
128- * failure message if hw breakpoints do not work.
129- */
130- if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
131- eprintk("kgdbts: HW breakpoints BROKEN, ending tests\n");
132- return;
133- }
134- force_hwbrks = 1;
135- v1printk("kgdbts:Using HW breakpoints for SW breakpoint tests\n");
136-#endif /* CONFIG_DEBUG_RODATA */
137-}
138-
139 static void kgdbts_run_tests(void)
140 {
141 char *ptr;
142@@ -1016,7 +1000,6 @@ static void kgdbts_run_tests(void)
143 v1printk("kgdbts:RUN access write breakpoint test\n");
144 run_hw_break_test(0);
145 }
146- test_debug_rodata();
147
148 /* required internal KGDB tests */
149 v1printk("kgdbts:RUN plant and detach test\n");
150diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
151index e5d689c..c4d2fc1 100644
152--- a/include/linux/kgdb.h
153+++ b/include/linux/kgdb.h
154@@ -63,7 +63,8 @@ enum kgdb_bptype {
155 BP_HARDWARE_BREAKPOINT,
156 BP_WRITE_WATCHPOINT,
157 BP_READ_WATCHPOINT,
158- BP_ACCESS_WATCHPOINT
159+ BP_ACCESS_WATCHPOINT,
160+ BP_POKE_BREAKPOINT,
161 };
162
163 enum kgdb_bpstate {
164--
1651.7.9.5
166
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch
new file mode 100644
index 00000000..2658ac85
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch
@@ -0,0 +1,99 @@
1From bffd29387e64c0dfb9905f059ecd24bfcccbe572 Mon Sep 17 00:00:00 2001
2From: Pavel Shilovsky <piastry@etersoft.ru>
3Date: Wed, 28 Mar 2012 21:56:19 +0400
4Subject: [PATCH 38/60] CIFS: Fix VFS lock usage for oplocked files
5
6commit 66189be74ff5f9f3fd6444315b85be210d07cef2 upstream.
7
8We can deadlock if we have a write oplock and two processes
9use the same file handle. In this case the first process can't
10unlock its lock if the second process blocked on the lock in the
11same time.
12
13Fix it by using posix_lock_file rather than posix_lock_file_wait
14under cinode->lock_mutex. If we request a blocking lock and
15posix_lock_file indicates that there is another lock that prevents
16us, wait untill that lock is released and restart our call.
17
18Acked-by: Jeff Layton <jlayton@redhat.com>
19Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
20Signed-off-by: Steve French <sfrench@us.ibm.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 fs/cifs/file.c | 10 +++++++++-
24 fs/locks.c | 3 ++-
25 include/linux/fs.h | 5 +++++
26 3 files changed, 16 insertions(+), 2 deletions(-)
27
28diff --git a/fs/cifs/file.c b/fs/cifs/file.c
29index 159fcc5..0f7dc22 100644
30--- a/fs/cifs/file.c
31+++ b/fs/cifs/file.c
32@@ -835,13 +835,21 @@ cifs_posix_lock_set(struct file *file, struct file_lock *flock)
33 if ((flock->fl_flags & FL_POSIX) == 0)
34 return rc;
35
36+try_again:
37 mutex_lock(&cinode->lock_mutex);
38 if (!cinode->can_cache_brlcks) {
39 mutex_unlock(&cinode->lock_mutex);
40 return rc;
41 }
42- rc = posix_lock_file_wait(file, flock);
43+
44+ rc = posix_lock_file(file, flock, NULL);
45 mutex_unlock(&cinode->lock_mutex);
46+ if (rc == FILE_LOCK_DEFERRED) {
47+ rc = wait_event_interruptible(flock->fl_wait, !flock->fl_next);
48+ if (!rc)
49+ goto try_again;
50+ locks_delete_block(flock);
51+ }
52 return rc;
53 }
54
55diff --git a/fs/locks.c b/fs/locks.c
56index 637694b..0d68f1f 100644
57--- a/fs/locks.c
58+++ b/fs/locks.c
59@@ -510,12 +510,13 @@ static void __locks_delete_block(struct file_lock *waiter)
60
61 /*
62 */
63-static void locks_delete_block(struct file_lock *waiter)
64+void locks_delete_block(struct file_lock *waiter)
65 {
66 lock_flocks();
67 __locks_delete_block(waiter);
68 unlock_flocks();
69 }
70+EXPORT_SYMBOL(locks_delete_block);
71
72 /* Insert waiter into blocker's block list.
73 * We use a circular list so that processes can be easily woken up in
74diff --git a/include/linux/fs.h b/include/linux/fs.h
75index 10b2288..11f1951 100644
76--- a/include/linux/fs.h
77+++ b/include/linux/fs.h
78@@ -1203,6 +1203,7 @@ extern int vfs_setlease(struct file *, long, struct file_lock **);
79 extern int lease_modify(struct file_lock **, int);
80 extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
81 extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
82+extern void locks_delete_block(struct file_lock *waiter);
83 extern void lock_flocks(void);
84 extern void unlock_flocks(void);
85 #else /* !CONFIG_FILE_LOCKING */
86@@ -1347,6 +1348,10 @@ static inline int lock_may_write(struct inode *inode, loff_t start,
87 return 1;
88 }
89
90+static inline void locks_delete_block(struct file_lock *waiter)
91+{
92+}
93+
94 static inline void lock_flocks(void)
95 {
96 }
97--
981.7.9.5
99
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch
new file mode 100644
index 00000000..e43dadaa
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch
@@ -0,0 +1,40 @@
1From 7255ae998bddcdfad51d059ae1c6acfe07221551 Mon Sep 17 00:00:00 2001
2From: Stephen Warren <swarren@nvidia.com>
3Date: Thu, 5 Apr 2012 16:50:05 -0600
4Subject: [PATCH 39/60] ARM: tegra: remove Tegra30 errata from MACH_TEGRA_DT
5
6[no upstream commit match, as this is a fix for a mis-applied patch in the
7previous 3.2-stable release. - gregkh]
8
9Commit 83e4194 "ARM: tegra: select required CPU and L2 errata options"
10contained two chunks; one was errata for Tegra20 (correctly applied)
11and the second errata for Tegra30. The latter was accidentally applied
12to the wrong config option; Tegra30 support wasn't added until v3.3,
13and so the second chunk should have just been dropped. This patch does
14so.
15
16Signed-off-by: Stephen Warren <swarren@nvidia.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 arch/arm/mach-tegra/Kconfig | 5 -----
20 1 file changed, 5 deletions(-)
21
22diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
23index dbc59fa..379cdc7 100644
24--- a/arch/arm/mach-tegra/Kconfig
25+++ b/arch/arm/mach-tegra/Kconfig
26@@ -61,11 +61,6 @@ config MACH_SEABOARD
27 config MACH_TEGRA_DT
28 bool "Generic Tegra board (FDT support)"
29 select USE_OF
30- select ARM_ERRATA_743622
31- select ARM_ERRATA_751472
32- select ARM_ERRATA_754322
33- select ARM_ERRATA_764369
34- select PL310_ERRATA_769419 if CACHE_L2X0
35 help
36 Support for generic nVidia Tegra boards using Flattened Device Tree
37
38--
391.7.9.5
40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch
new file mode 100644
index 00000000..52f02441
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch
@@ -0,0 +1,36 @@
1From 0055c53d221f32d89397630ae37a7310b5d974a0 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Alf=20H=C3=B8gemark?= <alf@i100.no>
3Date: Wed, 4 Apr 2012 12:27:09 -0400
4Subject: [PATCH 40/60] mmc: sdhci-dove: Fix compile error by including
5 module.h
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 8c2fc8e413ecc2c96b696e28d4eb1bc6cee8dc84 upstream.
11
12This patch fixes a compile error in drivers/mmc/host/sdhci-dove.c
13by including the linux/module.h file.
14
15Signed-off-by: Alf Høgemark <alf@i100.no>
16Signed-off-by: Chris Ball <cjb@laptop.org>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/mmc/host/sdhci-dove.c | 1 +
20 1 file changed, 1 insertion(+)
21
22diff --git a/drivers/mmc/host/sdhci-dove.c b/drivers/mmc/host/sdhci-dove.c
23index a81312c..31acb70 100644
24--- a/drivers/mmc/host/sdhci-dove.c
25+++ b/drivers/mmc/host/sdhci-dove.c
26@@ -20,6 +20,7 @@
27 */
28
29 #include <linux/io.h>
30+#include <linux/module.h>
31 #include <linux/mmc/host.h>
32
33 #include "sdhci-pltfm.h"
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch
new file mode 100644
index 00000000..c43c66ae
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch
@@ -0,0 +1,42 @@
1From cd7bf853d4130f7b81d066e7760289e3485beb4b Mon Sep 17 00:00:00 2001
2From: Ludovic Desroches <ludovic.desroches@atmel.com>
3Date: Wed, 28 Mar 2012 12:28:33 +0200
4Subject: [PATCH 41/60] mmc: atmel-mci: correct data timeout computation
5
6commit 66292ad92c6d3f2f1c137a1c826b331ca8595dfd upstream.
7
8The HSMCI operates at a rate of up to Master Clock divided by two.
9Moreover previous calculation can cause overflows and so wrong
10timeouts.
11
12Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
13Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
14Signed-off-by: Chris Ball <cjb@laptop.org>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/mmc/host/atmel-mci.c | 9 ++++++++-
18 1 file changed, 8 insertions(+), 1 deletion(-)
19
20diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
21index 9896933..0932024 100644
22--- a/drivers/mmc/host/atmel-mci.c
23+++ b/drivers/mmc/host/atmel-mci.c
24@@ -480,7 +480,14 @@ err:
25 static inline unsigned int atmci_ns_to_clocks(struct atmel_mci *host,
26 unsigned int ns)
27 {
28- return (ns * (host->bus_hz / 1000000) + 999) / 1000;
29+ /*
30+ * It is easier here to use us instead of ns for the timeout,
31+ * it prevents from overflows during calculation.
32+ */
33+ unsigned int us = DIV_ROUND_UP(ns, 1000);
34+
35+ /* Maximum clock frequency is host->bus_hz/2 */
36+ return us * (DIV_ROUND_UP(host->bus_hz, 2000000));
37 }
38
39 static void atmci_set_timeout(struct atmel_mci *host,
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch
new file mode 100644
index 00000000..d04f6804
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch
@@ -0,0 +1,102 @@
1From 3d49fca1a4b93c2fad7a36f29c6e58e4126cad8e Mon Sep 17 00:00:00 2001
2From: Mark Rustad <mark.d.rustad@intel.com>
3Date: Tue, 3 Apr 2012 10:24:41 -0700
4Subject: [PATCH 42/60] tcm_fc: Add abort flag for gracefully handling
5 exchange timeout
6
7commit e1c4038282c7586c3544542b37872c434669d3ac upstream.
8
9Add abort flag and use it to terminate processing when an exchange
10is timed out or is reset. The abort flag is used in place of the
11transport_generic_free_cmd function call in the reset and timeout
12cases, because calling that function in that context would free
13memory that was in use. The aborted flag allows the lifetime to
14be managed in a more normal way, while truncating the processing.
15
16This change eliminates a source of memory corruption which
17manifested in a variety of ugly ways.
18
19(nab: Drop unused struct fc_exch *ep in ft_recv_seq)
20
21Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
22Acked-by: Kiran Patil <Kiran.patil@intel.com>
23Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/target/tcm_fc/tcm_fc.h | 1 +
27 drivers/target/tcm_fc/tfc_cmd.c | 10 ++++++++--
28 drivers/target/tcm_fc/tfc_io.c | 2 ++
29 3 files changed, 11 insertions(+), 2 deletions(-)
30
31diff --git a/drivers/target/tcm_fc/tcm_fc.h b/drivers/target/tcm_fc/tcm_fc.h
32index e05c551..be7ed12 100644
33--- a/drivers/target/tcm_fc/tcm_fc.h
34+++ b/drivers/target/tcm_fc/tcm_fc.h
35@@ -124,6 +124,7 @@ struct ft_cmd {
36 /* Local sense buffer */
37 unsigned char ft_sense_buffer[TRANSPORT_SENSE_BUFFER];
38 u32 was_ddp_setup:1; /* Set only if ddp is setup */
39+ u32 aborted:1; /* Set if aborted by reset or timeout */
40 struct scatterlist *sg; /* Set only if DDP is setup */
41 u32 sg_cnt; /* No. of item in scatterlist */
42 };
43diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c
44index 754b669..d95cfe2 100644
45--- a/drivers/target/tcm_fc/tfc_cmd.c
46+++ b/drivers/target/tcm_fc/tfc_cmd.c
47@@ -130,6 +130,8 @@ int ft_queue_status(struct se_cmd *se_cmd)
48 struct fc_exch *ep;
49 size_t len;
50
51+ if (cmd->aborted)
52+ return 0;
53 ft_dump_cmd(cmd, __func__);
54 ep = fc_seq_exch(cmd->seq);
55 lport = ep->lp;
56@@ -196,6 +198,8 @@ int ft_write_pending(struct se_cmd *se_cmd)
57
58 ft_dump_cmd(cmd, __func__);
59
60+ if (cmd->aborted)
61+ return 0;
62 ep = fc_seq_exch(cmd->seq);
63 lport = ep->lp;
64 fp = fc_frame_alloc(lport, sizeof(*txrdy));
65@@ -266,10 +270,10 @@ static void ft_recv_seq(struct fc_seq *sp, struct fc_frame *fp, void *arg)
66 struct ft_cmd *cmd = arg;
67 struct fc_frame_header *fh;
68
69- if (IS_ERR(fp)) {
70+ if (unlikely(IS_ERR(fp))) {
71 /* XXX need to find cmd if queued */
72 cmd->seq = NULL;
73- transport_generic_free_cmd(&cmd->se_cmd, 0);
74+ cmd->aborted = true;
75 return;
76 }
77
78@@ -447,6 +451,8 @@ int ft_queue_tm_resp(struct se_cmd *se_cmd)
79 struct se_tmr_req *tmr = se_cmd->se_tmr_req;
80 enum fcp_resp_rsp_codes code;
81
82+ if (cmd->aborted)
83+ return 0;
84 switch (tmr->response) {
85 case TMR_FUNCTION_COMPLETE:
86 code = FCP_TMF_CMPL;
87diff --git a/drivers/target/tcm_fc/tfc_io.c b/drivers/target/tcm_fc/tfc_io.c
88index 1369b1c..ada131c 100644
89--- a/drivers/target/tcm_fc/tfc_io.c
90+++ b/drivers/target/tcm_fc/tfc_io.c
91@@ -84,6 +84,8 @@ int ft_queue_data_in(struct se_cmd *se_cmd)
92 void *from;
93 void *to = NULL;
94
95+ if (cmd->aborted)
96+ return 0;
97 ep = fc_seq_exch(cmd->seq);
98 lport = ep->lp;
99 cmd->seq = lport->tt.seq_start_next(cmd->seq);
100--
1011.7.9.5
102
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch
new file mode 100644
index 00000000..79c921ed
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch
@@ -0,0 +1,61 @@
1From dd64e41dfd092de59c1dc5c58ceb26837c16a17c Mon Sep 17 00:00:00 2001
2From: Mark Rustad <mark.d.rustad@intel.com>
3Date: Tue, 3 Apr 2012 10:24:52 -0700
4Subject: [PATCH 43/60] tcm_fc: Do not free tpg structure during wq allocation
5 failure
6
7commit 06383f10c49f507220594a455c6491ca6f8c94ab upstream.
8
9Avoid freeing a registered tpg structure if an alloc_workqueue call
10fails. This fixes a bug where the failure was leaking memory associated
11with se_portal_group setup during the original core_tpg_register() call.
12
13Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
14Acked-by: Kiran Patil <Kiran.patil@intel.com>
15Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/target/tcm_fc/tfc_conf.c | 13 ++++++++-----
19 1 file changed, 8 insertions(+), 5 deletions(-)
20
21diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c
22index 9402b73..7962325 100644
23--- a/drivers/target/tcm_fc/tfc_conf.c
24+++ b/drivers/target/tcm_fc/tfc_conf.c
25@@ -304,6 +304,7 @@ static struct se_portal_group *ft_add_tpg(
26 {
27 struct ft_lport_acl *lacl;
28 struct ft_tpg *tpg;
29+ struct workqueue_struct *wq;
30 unsigned long index;
31 int ret;
32
33@@ -325,18 +326,20 @@ static struct se_portal_group *ft_add_tpg(
34 tpg->lport_acl = lacl;
35 INIT_LIST_HEAD(&tpg->lun_list);
36
37- ret = core_tpg_register(&ft_configfs->tf_ops, wwn, &tpg->se_tpg,
38- tpg, TRANSPORT_TPG_TYPE_NORMAL);
39- if (ret < 0) {
40+ wq = alloc_workqueue("tcm_fc", 0, 1);
41+ if (!wq) {
42 kfree(tpg);
43 return NULL;
44 }
45
46- tpg->workqueue = alloc_workqueue("tcm_fc", 0, 1);
47- if (!tpg->workqueue) {
48+ ret = core_tpg_register(&ft_configfs->tf_ops, wwn, &tpg->se_tpg,
49+ tpg, TRANSPORT_TPG_TYPE_NORMAL);
50+ if (ret < 0) {
51+ destroy_workqueue(wq);
52 kfree(tpg);
53 return NULL;
54 }
55+ tpg->workqueue = wq;
56
57 mutex_lock(&ft_lport_lock);
58 list_add_tail(&tpg->list, &lacl->tpg_list);
59--
601.7.9.5
61
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch
new file mode 100644
index 00000000..e9c6efd3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch
@@ -0,0 +1,72 @@
1From 444559e0fe29e31b1a95a3668c530bd1aed732ce Mon Sep 17 00:00:00 2001
2From: Kees Cook <keescook@chromium.org>
3Date: Wed, 4 Apr 2012 11:40:19 -0700
4Subject: [PATCH 44/60] sysctl: fix write access to
5 dmesg_restrict/kptr_restrict
6
7commit 620f6e8e855d6d447688a5f67a4e176944a084e8 upstream.
8
9Commit bfdc0b4 adds code to restrict access to dmesg_restrict,
10however, it incorrectly alters kptr_restrict rather than
11dmesg_restrict.
12
13The original patch from Richard Weinberger
14(https://lkml.org/lkml/2011/3/14/362) alters dmesg_restrict as
15expected, and so the patch seems to have been misapplied.
16
17This adds the CAP_SYS_ADMIN check to both dmesg_restrict and
18kptr_restrict, since both are sensitive.
19
20Reported-by: Phillip Lougher <plougher@redhat.com>
21Signed-off-by: Kees Cook <keescook@chromium.org>
22Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
23Acked-by: Richard Weinberger <richard@nod.at>
24Signed-off-by: James Morris <james.l.morris@oracle.com>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 kernel/sysctl.c | 8 ++++----
28 1 file changed, 4 insertions(+), 4 deletions(-)
29
30diff --git a/kernel/sysctl.c b/kernel/sysctl.c
31index ae27196..ea7ec7f 100644
32--- a/kernel/sysctl.c
33+++ b/kernel/sysctl.c
34@@ -166,7 +166,7 @@ static int proc_taint(struct ctl_table *table, int write,
35 #endif
36
37 #ifdef CONFIG_PRINTK
38-static int proc_dmesg_restrict(struct ctl_table *table, int write,
39+static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
40 void __user *buffer, size_t *lenp, loff_t *ppos);
41 #endif
42
43@@ -713,7 +713,7 @@ static struct ctl_table kern_table[] = {
44 .data = &dmesg_restrict,
45 .maxlen = sizeof(int),
46 .mode = 0644,
47- .proc_handler = proc_dointvec_minmax,
48+ .proc_handler = proc_dointvec_minmax_sysadmin,
49 .extra1 = &zero,
50 .extra2 = &one,
51 },
52@@ -722,7 +722,7 @@ static struct ctl_table kern_table[] = {
53 .data = &kptr_restrict,
54 .maxlen = sizeof(int),
55 .mode = 0644,
56- .proc_handler = proc_dmesg_restrict,
57+ .proc_handler = proc_dointvec_minmax_sysadmin,
58 .extra1 = &zero,
59 .extra2 = &two,
60 },
61@@ -2422,7 +2422,7 @@ static int proc_taint(struct ctl_table *table, int write,
62 }
63
64 #ifdef CONFIG_PRINTK
65-static int proc_dmesg_restrict(struct ctl_table *table, int write,
66+static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
67 void __user *buffer, size_t *lenp, loff_t *ppos)
68 {
69 if (write && !capable(CAP_SYS_ADMIN))
70--
711.7.9.5
72
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch
new file mode 100644
index 00000000..8fcd35e8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch
@@ -0,0 +1,74 @@
1From ee1916e58deb327a1bbaba6fc344e593fc54764f Mon Sep 17 00:00:00 2001
2From: Frank Rowand <frank.rowand@am.sony.com>
3Date: Mon, 9 Apr 2012 17:59:03 -0700
4Subject: [PATCH 45/60] modpost: Fix modpost license checking of vmlinux.o
5
6commit 258f742635360175564e9470eb060ff4d4b984e7 upstream.
7
8Commit f02e8a6596b7 ("module: Sort exported symbols") sorts symbols
9placing each of them in its own elf section. This sorting and merging
10into the canonical sections are done by the linker.
11
12Unfortunately modpost to generate Module.symvers file parses vmlinux.o
13(which is not linked yet) and all modules object files (which aren't
14linked yet). These aren't sanitized by the linker yet. That breaks
15modpost that can't detect license properly for modules.
16
17This patch makes modpost aware of the new exported symbols structure.
18
19[ This above is a slightly corrected version of the explanation of the
20 problem, copied from commit 62a2635610db ("modpost: Fix modpost's
21 license checking V3"). That commit fixed the problem for module
22 object files, but not for vmlinux.o. This patch fixes modpost for
23 vmlinux.o. ]
24
25Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
26Signed-off-by: Alessio Igor Bogani <abogani@kernel.org>
27Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
28Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29---
30 scripts/mod/modpost.c | 7 +++++--
31 scripts/mod/modpost.h | 1 +
32 2 files changed, 6 insertions(+), 2 deletions(-)
33
34diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
35index 159b4cc..619228d 100644
36--- a/scripts/mod/modpost.c
37+++ b/scripts/mod/modpost.c
38@@ -132,8 +132,10 @@ static struct module *new_module(char *modname)
39 /* strip trailing .o */
40 s = strrchr(p, '.');
41 if (s != NULL)
42- if (strcmp(s, ".o") == 0)
43+ if (strcmp(s, ".o") == 0) {
44 *s = '\0';
45+ mod->is_dot_o = 1;
46+ }
47
48 /* add to list */
49 mod->name = p;
50@@ -587,7 +589,8 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
51 unsigned int crc;
52 enum export export;
53
54- if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0)
55+ if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
56+ strncmp(symname, "__ksymtab", 9) == 0)
57 export = export_from_secname(info, get_secindex(info, sym));
58 else
59 export = export_from_sec(info, get_secindex(info, sym));
60diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
61index 2031119..51207e4 100644
62--- a/scripts/mod/modpost.h
63+++ b/scripts/mod/modpost.h
64@@ -113,6 +113,7 @@ struct module {
65 int has_cleanup;
66 struct buffer dev_table_buf;
67 char srcversion[25];
68+ int is_dot_o;
69 };
70
71 struct elf_info {
72--
731.7.9.5
74
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch
new file mode 100644
index 00000000..e122d2a3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch
@@ -0,0 +1,62 @@
1From b8c4c0ffa982752ee73d7eb5afaf39635e86ee43 Mon Sep 17 00:00:00 2001
2From: Jonathan Nieder <jrnieder@gmail.com>
3Date: Tue, 28 Feb 2012 11:51:10 -0700
4Subject: [PATCH 46/60] x86/PCI: use host bridge _CRS info on MSI MS-7253
5
6commit 8411371709610c826bf65684f886bfdfb5780ca1 upstream.
7
8In the spirit of commit 29cf7a30f8a0 ("x86/PCI: use host bridge _CRS
9info on ASUS M2V-MX SE"), this DMI quirk turns on "pci_use_crs" by
10default on a board that needs it.
11
12This fixes boot failures and oopses introduced in 3e3da00c01d0
13("x86/pci: AMD one chain system to use pci read out res"). The quirk
14is quite targetted (to a specific board and BIOS version) for two
15reasons:
16
17 (1) to emphasize that this method of tackling the problem one quirk
18 at a time is a little insane
19
20 (2) to give BIOS vendors an opportunity to use simpler tables and
21 allow us to return to generic behavior (whatever that happens to
22 be) with a later BIOS update
23
24In other words, I am not at all happy with having quirks like this.
25But it is even worse for the kernel not to work out of the box on
26these machines, so...
27
28Reference: https://bugzilla.kernel.org/show_bug.cgi?id=42619
29Reported-by: Svante Signell <svante.signell@telia.com>
30Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
31Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
32Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
33Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
34---
35 arch/x86/pci/acpi.c | 11 +++++++++++
36 1 file changed, 11 insertions(+)
37
38diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
39index f8348ab..dc00ad5 100644
40--- a/arch/x86/pci/acpi.c
41+++ b/arch/x86/pci/acpi.c
42@@ -54,6 +54,17 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = {
43 DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
44 },
45 },
46+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42619 */
47+ {
48+ .callback = set_use_crs,
49+ .ident = "MSI MS-7253",
50+ .matches = {
51+ DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
52+ DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
53+ DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"),
54+ DMI_MATCH(DMI_BIOS_VERSION, "V1.6"),
55+ },
56+ },
57 {}
58 };
59
60--
611.7.9.5
62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch
new file mode 100644
index 00000000..240d1beb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch
@@ -0,0 +1,50 @@
1From 6283a8eb02e48cf6f56470723c8b2f518dbe6554 Mon Sep 17 00:00:00 2001
2From: Jonathan Nieder <jrnieder@gmail.com>
3Date: Tue, 28 Feb 2012 15:31:35 -0600
4Subject: [PATCH 47/60] x86/PCI: do not tie MSI MS-7253 use_crs quirk to BIOS
5 version
6
7commit a97f4f5e524bcd09a85ef0b8821a14d35e69335f upstream.
8
9Carlos was getting
10
11 WARNING: at drivers/pci/pci.c:118 pci_ioremap_bar+0x24/0x52()
12
13when probing his sound card, and sound did not work. After adding
14pci=use_crs to the kernel command line, no more trouble.
15
16Ok, we can add a quirk. dmidecode output reveals that this is an MSI
17MS-7253, for which we already have a quirk, but the short-sighted
18author tied the quirk to a single BIOS version, making it not kick in
19on Carlos's machine with BIOS V1.2. If a later BIOS update makes it
20no longer necessary to look at the _CRS info it will still be
21harmless, so let's stop trying to guess which versions have and don't
22have accurate _CRS tables.
23
24Addresses https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5533
25Also see <https://bugzilla.kernel.org/show_bug.cgi?id=42619>.
26
27Reported-by: Carlos Luna <caralu74@gmail.com>
28Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
29Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
30Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
31Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
32---
33 arch/x86/pci/acpi.c | 1 -
34 1 file changed, 1 deletion(-)
35
36diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
37index dc00ad5..0ed97d8 100644
38--- a/arch/x86/pci/acpi.c
39+++ b/arch/x86/pci/acpi.c
40@@ -62,7 +62,6 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = {
41 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
42 DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
43 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"),
44- DMI_MATCH(DMI_BIOS_VERSION, "V1.6"),
45 },
46 },
47 {}
48--
491.7.9.5
50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch
new file mode 100644
index 00000000..114b0a02
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch
@@ -0,0 +1,91 @@
1From 94366efb1ed1a86595b8b1bd4f0d22f581b5a6c2 Mon Sep 17 00:00:00 2001
2From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
3Date: Wed, 29 Feb 2012 21:53:22 +0900
4Subject: [PATCH 48/60] TOMOYO: Fix mount flags checking order.
5
6commit df91e49477a9be15921cb2854e1d12a3bdb5e425 upstream.
7
8Userspace can pass in arbitrary combinations of MS_* flags to mount().
9
10If both MS_BIND and one of MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE are
11passed, device name which should be checked for MS_BIND was not checked because
12MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE had higher priority than MS_BIND.
13
14If both one of MS_BIND/MS_MOVE and MS_REMOUNT are passed, device name which
15should not be checked for MS_REMOUNT was checked because MS_BIND/MS_MOVE had
16higher priority than MS_REMOUNT.
17
18Fix these bugs by changing priority to MS_REMOUNT -> MS_BIND ->
19MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE -> MS_MOVE as with do_mount() does.
20
21Also, unconditionally return -EINVAL if more than one of
22MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE is passed so that TOMOYO will not
23generate inaccurate audit logs, for commit 7a2e8a8f "VFS: Sanity check mount
24flags passed to change_mnt_propagation()" clarified that these flags must be
25exclusively passed.
26
27Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
28Signed-off-by: James Morris <james.l.morris@oracle.com>
29Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
30---
31 security/tomoyo/mount.c | 38 ++++++++++++++++++++------------------
32 1 file changed, 20 insertions(+), 18 deletions(-)
33
34diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c
35index bee09d0..fe00cdf 100644
36--- a/security/tomoyo/mount.c
37+++ b/security/tomoyo/mount.c
38@@ -199,30 +199,32 @@ int tomoyo_mount_permission(char *dev_name, struct path *path,
39 if (flags & MS_REMOUNT) {
40 type = tomoyo_mounts[TOMOYO_MOUNT_REMOUNT];
41 flags &= ~MS_REMOUNT;
42- }
43- if (flags & MS_MOVE) {
44- type = tomoyo_mounts[TOMOYO_MOUNT_MOVE];
45- flags &= ~MS_MOVE;
46- }
47- if (flags & MS_BIND) {
48+ } else if (flags & MS_BIND) {
49 type = tomoyo_mounts[TOMOYO_MOUNT_BIND];
50 flags &= ~MS_BIND;
51- }
52- if (flags & MS_UNBINDABLE) {
53- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE];
54- flags &= ~MS_UNBINDABLE;
55- }
56- if (flags & MS_PRIVATE) {
57+ } else if (flags & MS_SHARED) {
58+ if (flags & (MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
59+ return -EINVAL;
60+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED];
61+ flags &= ~MS_SHARED;
62+ } else if (flags & MS_PRIVATE) {
63+ if (flags & (MS_SHARED | MS_SLAVE | MS_UNBINDABLE))
64+ return -EINVAL;
65 type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_PRIVATE];
66 flags &= ~MS_PRIVATE;
67- }
68- if (flags & MS_SLAVE) {
69+ } else if (flags & MS_SLAVE) {
70+ if (flags & (MS_SHARED | MS_PRIVATE | MS_UNBINDABLE))
71+ return -EINVAL;
72 type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SLAVE];
73 flags &= ~MS_SLAVE;
74- }
75- if (flags & MS_SHARED) {
76- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED];
77- flags &= ~MS_SHARED;
78+ } else if (flags & MS_UNBINDABLE) {
79+ if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE))
80+ return -EINVAL;
81+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE];
82+ flags &= ~MS_UNBINDABLE;
83+ } else if (flags & MS_MOVE) {
84+ type = tomoyo_mounts[TOMOYO_MOUNT_MOVE];
85+ flags &= ~MS_MOVE;
86 }
87 if (!type)
88 type = "<NULL>";
89--
901.7.9.5
91
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch
new file mode 100644
index 00000000..505f91f5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch
@@ -0,0 +1,100 @@
1From 411c3c5e1a3ce763286c32ec38523f111d836fdc Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3Date: Tue, 10 Apr 2012 16:04:49 -0700
4Subject: [PATCH 49/60] Revert "x86/ioapic: Add register level checks to
5 detect bogus io-apic entries"
6
7This reverts commit 273fb194e86b795b08a724c7646d0f694949070b
8[73d63d038ee9f769f5e5b46792d227fe20e442c5 upstream]
9
10It causes problems, so needs to be reverted from 3.2-stable for now.
11
12Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
13Cc: Jon Dufresne <jon@jondufresne.org>
14Cc: Suresh Siddha <suresh.b.siddha@intel.com>
15Cc: <yinghai@kernel.org>
16Cc: Josh Boyer <jwboyer@redhat.com>
17Cc: Ingo Molnar <mingo@elte.hu>
18Cc: Teck Choon Giam <giamteckchoon@gmail.com>
19Cc: Ben Guthro <ben@guthro.net>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 arch/x86/kernel/apic/io_apic.c | 40 ++++++++--------------------------------
23 1 file changed, 8 insertions(+), 32 deletions(-)
24
25diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
26index a25e276..6d939d7 100644
27--- a/arch/x86/kernel/apic/io_apic.c
28+++ b/arch/x86/kernel/apic/io_apic.c
29@@ -3963,36 +3963,18 @@ int mp_find_ioapic_pin(int ioapic, u32 gsi)
30 static __init int bad_ioapic(unsigned long address)
31 {
32 if (nr_ioapics >= MAX_IO_APICS) {
33- pr_warn("WARNING: Max # of I/O APICs (%d) exceeded (found %d), skipping\n",
34- MAX_IO_APICS, nr_ioapics);
35+ printk(KERN_WARNING "WARNING: Max # of I/O APICs (%d) exceeded "
36+ "(found %d), skipping\n", MAX_IO_APICS, nr_ioapics);
37 return 1;
38 }
39 if (!address) {
40- pr_warn("WARNING: Bogus (zero) I/O APIC address found in table, skipping!\n");
41+ printk(KERN_WARNING "WARNING: Bogus (zero) I/O APIC address"
42+ " found in table, skipping!\n");
43 return 1;
44 }
45 return 0;
46 }
47
48-static __init int bad_ioapic_register(int idx)
49-{
50- union IO_APIC_reg_00 reg_00;
51- union IO_APIC_reg_01 reg_01;
52- union IO_APIC_reg_02 reg_02;
53-
54- reg_00.raw = io_apic_read(idx, 0);
55- reg_01.raw = io_apic_read(idx, 1);
56- reg_02.raw = io_apic_read(idx, 2);
57-
58- if (reg_00.raw == -1 && reg_01.raw == -1 && reg_02.raw == -1) {
59- pr_warn("I/O APIC 0x%x registers return all ones, skipping!\n",
60- mpc_ioapic_addr(idx));
61- return 1;
62- }
63-
64- return 0;
65-}
66-
67 void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
68 {
69 int idx = 0;
70@@ -4009,12 +3991,6 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
71 ioapics[idx].mp_config.apicaddr = address;
72
73 set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
74-
75- if (bad_ioapic_register(idx)) {
76- clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
77- return;
78- }
79-
80 ioapics[idx].mp_config.apicid = io_apic_unique_id(id);
81 ioapics[idx].mp_config.apicver = io_apic_get_version(idx);
82
83@@ -4035,10 +4011,10 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
84 if (gsi_cfg->gsi_end >= gsi_top)
85 gsi_top = gsi_cfg->gsi_end + 1;
86
87- pr_info("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, GSI %d-%d\n",
88- idx, mpc_ioapic_id(idx),
89- mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
90- gsi_cfg->gsi_base, gsi_cfg->gsi_end);
91+ printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
92+ "GSI %d-%d\n", idx, mpc_ioapic_id(idx),
93+ mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
94+ gsi_cfg->gsi_base, gsi_cfg->gsi_end);
95
96 nr_ioapics++;
97 }
98--
991.7.9.5
100
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch
new file mode 100644
index 00000000..b5644804
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch
@@ -0,0 +1,39 @@
1From ad14133a305d5de3309f31b52c0e9456eb3310be Mon Sep 17 00:00:00 2001
2From: "Lee, Chun-Yi" <joeyli.kernel@gmail.com>
3Date: Fri, 23 Mar 2012 12:36:44 +0800
4Subject: [PATCH 50/60] acer-wmi: No wifi rfkill on Sony machines
5
6commit 5719b81988f3c24ff694dc3a37e35b35630a3966 upstream.
7
8The wireless rfkill should charged by sony-laptop but not acer-wmi.
9So, add Sony's SNY5001 acpi device to blacklist in acer-wmi.
10
11Tested on Sony Vaio
12
13Cc: Carlos Corbacho <carlos@strangeworlds.co.uk>
14Cc: Matthew Garrett <mjg@redhat.com>
15Cc: Mattia Dongili <malattia@linux.it>
16Cc: Dimitris N <ddarlac@gmail.com>
17Tested-by: Dimitris N <ddarlac@gmail.com>
18Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
19Signed-off-by: Matthew Garrett <mjg@redhat.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/platform/x86/acer-wmi.c | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
26index 1e5290b..110e4af 100644
27--- a/drivers/platform/x86/acer-wmi.c
28+++ b/drivers/platform/x86/acer-wmi.c
29@@ -692,6 +692,7 @@ static const struct acpi_device_id norfkill_ids[] = {
30 { "VPC2004", 0},
31 { "IBM0068", 0},
32 { "LEN0068", 0},
33+ { "SNY5001", 0}, /* sony-laptop in charge */
34 { "", 0},
35 };
36
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch
new file mode 100644
index 00000000..f7551995
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch
@@ -0,0 +1,36 @@
1From 9f35dc6cc9f96e7a45b42dd5e4c8e2eee1e84e05 Mon Sep 17 00:00:00 2001
2From: Sachin Prabhu <sprabhu@redhat.com>
3Date: Thu, 22 Mar 2012 16:46:28 +0000
4Subject: [PATCH 51/60] Fix length of buffer copied in __nfs4_get_acl_uncached
5
6commit 20e0fa98b751facf9a1101edaefbc19c82616a68 upstream.
7
8_copy_from_pages() used to copy data from the temporary buffer to the
9user passed buffer is passed the wrong size parameter when copying
10data. res.acl_len contains both the bitmap and acl lenghts while
11acl_len contains the acl length after adjusting for the bitmap size.
12
13Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
14Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
15Cc: Josh Boyer <jwboyer@redhat.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 fs/nfs/nfs4proc.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
22index d945700..757293b 100644
23--- a/fs/nfs/nfs4proc.c
24+++ b/fs/nfs/nfs4proc.c
25@@ -3618,7 +3618,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
26 if (acl_len > buflen)
27 goto out_free;
28 _copy_from_pages(buf, pages, res.acl_data_offset,
29- res.acl_len);
30+ acl_len);
31 }
32 ret = acl_len;
33 out_free:
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch
new file mode 100644
index 00000000..0300631e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch
@@ -0,0 +1,99 @@
1From 844d37ab7b6069d15d096a879225ac1e71b51974 Mon Sep 17 00:00:00 2001
2From: Salman Qazi <sqazi@google.com>
3Date: Fri, 9 Mar 2012 16:41:01 -0800
4Subject: [PATCH 52/60] sched/x86: Fix overflow in cyc2ns_offset
5
6commit 9993bc635d01a6ee7f6b833b4ee65ce7c06350b1 upstream.
7
8When a machine boots up, the TSC generally gets reset. However,
9when kexec is used to boot into a kernel, the TSC value would be
10carried over from the previous kernel. The computation of
11cycns_offset in set_cyc2ns_scale is prone to an overflow, if the
12machine has been up more than 208 days prior to the kexec. The
13overflow happens when we multiply *scale, even though there is
14enough room to store the final answer.
15
16We fix this issue by decomposing tsc_now into the quotient and
17remainder of division by CYC2NS_SCALE_FACTOR and then performing
18the multiplication separately on the two components.
19
20Refactor code to share the calculation with the previous
21fix in __cycles_2_ns().
22
23Signed-off-by: Salman Qazi <sqazi@google.com>
24Acked-by: John Stultz <john.stultz@linaro.org>
25Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
26Cc: Paul Turner <pjt@google.com>
27Cc: john stultz <johnstul@us.ibm.com>
28Link: http://lkml.kernel.org/r/20120310004027.19291.88460.stgit@dungbeetle.mtv.corp.google.com
29Signed-off-by: Ingo Molnar <mingo@elte.hu>
30Cc: Mike Galbraith <efault@gmx.de>
31Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
32---
33 arch/x86/include/asm/timer.h | 8 ++------
34 arch/x86/kernel/tsc.c | 3 ++-
35 include/linux/kernel.h | 13 +++++++++++++
36 3 files changed, 17 insertions(+), 7 deletions(-)
37
38diff --git a/arch/x86/include/asm/timer.h b/arch/x86/include/asm/timer.h
39index 431793e..34baa0e 100644
40--- a/arch/x86/include/asm/timer.h
41+++ b/arch/x86/include/asm/timer.h
42@@ -57,14 +57,10 @@ DECLARE_PER_CPU(unsigned long long, cyc2ns_offset);
43
44 static inline unsigned long long __cycles_2_ns(unsigned long long cyc)
45 {
46- unsigned long long quot;
47- unsigned long long rem;
48 int cpu = smp_processor_id();
49 unsigned long long ns = per_cpu(cyc2ns_offset, cpu);
50- quot = (cyc >> CYC2NS_SCALE_FACTOR);
51- rem = cyc & ((1ULL << CYC2NS_SCALE_FACTOR) - 1);
52- ns += quot * per_cpu(cyc2ns, cpu) +
53- ((rem * per_cpu(cyc2ns, cpu)) >> CYC2NS_SCALE_FACTOR);
54+ ns += mult_frac(cyc, per_cpu(cyc2ns, cpu),
55+ (1UL << CYC2NS_SCALE_FACTOR));
56 return ns;
57 }
58
59diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
60index 3fe298a..1ec515b 100644
61--- a/arch/x86/kernel/tsc.c
62+++ b/arch/x86/kernel/tsc.c
63@@ -622,7 +622,8 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
64
65 if (cpu_khz) {
66 *scale = (NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR)/cpu_khz;
67- *offset = ns_now - (tsc_now * *scale >> CYC2NS_SCALE_FACTOR);
68+ *offset = ns_now - mult_frac(tsc_now, *scale,
69+ (1UL << CYC2NS_SCALE_FACTOR));
70 }
71
72 sched_clock_idle_wakeup_event(0);
73diff --git a/include/linux/kernel.h b/include/linux/kernel.h
74index e8b1597..a70783d 100644
75--- a/include/linux/kernel.h
76+++ b/include/linux/kernel.h
77@@ -85,6 +85,19 @@
78 } \
79 )
80
81+/*
82+ * Multiplies an integer by a fraction, while avoiding unnecessary
83+ * overflow or loss of precision.
84+ */
85+#define mult_frac(x, numer, denom)( \
86+{ \
87+ typeof(x) quot = (x) / (denom); \
88+ typeof(x) rem = (x) % (denom); \
89+ (quot * (numer)) + ((rem * (numer)) / (denom)); \
90+} \
91+)
92+
93+
94 #define _RET_IP_ (unsigned long)__builtin_return_address(0)
95 #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
96
97--
981.7.9.5
99
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch
new file mode 100644
index 00000000..02d849ac
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch
@@ -0,0 +1,58 @@
1From 84eaf07729408e49027beda2fb0861aad6f96bce Mon Sep 17 00:00:00 2001
2From: Nishanth Menon <nm@ti.com>
3Date: Wed, 22 Feb 2012 20:03:45 -0600
4Subject: [PATCH 53/60] mfd: Clear twl6030 IRQ status register only once
5
6commit 3f8349e6e98ba0455437724589072523865eae5e upstream.
7
8TWL6030 family of PMIC use a shadow interrupt status register
9while kernel processes the current interrupt event.
10However, any write(0 or 1) to register INT_STS_A, INT_STS_B or
11INT_STS_C clears all 3 interrupt status registers.
12
13Since clear of the interrupt is done on 32k clk, depending on I2C
14bus speed, we could in-adverently clear the status of a interrupt
15status pending on shadow register in the current implementation.
16This is due to the fact that multi-byte i2c write operation into
17three seperate status register could result in multiple load
18and clear of status and result in lost interrupts.
19
20Instead, doing a single byte write to INT_STS_A register with 0x0
21will clear all three interrupt status registers without the related
22risk.
23
24Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
25Signed-off-by: Nishanth Menon <nm@ti.com>
26Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/mfd/twl6030-irq.c | 13 +++++++++++--
30 1 file changed, 11 insertions(+), 2 deletions(-)
31
32diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
33index 3eee45f..83f4988 100644
34--- a/drivers/mfd/twl6030-irq.c
35+++ b/drivers/mfd/twl6030-irq.c
36@@ -187,8 +187,17 @@ static int twl6030_irq_thread(void *data)
37 }
38 local_irq_enable();
39 }
40- ret = twl_i2c_write(TWL_MODULE_PIH, sts.bytes,
41- REG_INT_STS_A, 3); /* clear INT_STS_A */
42+
43+ /*
44+ * NOTE:
45+ * Simulation confirms that documentation is wrong w.r.t the
46+ * interrupt status clear operation. A single *byte* write to
47+ * any one of STS_A to STS_C register results in all three
48+ * STS registers being reset. Since it does not matter which
49+ * value is written, all three registers are cleared on a
50+ * single byte write, so we just use 0x0 to clear.
51+ */
52+ ret = twl_i2c_write_u8(TWL_MODULE_PIH, 0x00, REG_INT_STS_A);
53 if (ret)
54 pr_warning("twl6030: I2C error in clearing PIH ISR\n");
55
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch
new file mode 100644
index 00000000..5a194e96
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch
@@ -0,0 +1,37 @@
1From d784d12ff4ada66b51ad2f394ab6cd391859897c Mon Sep 17 00:00:00 2001
2From: Guan Xin <guanx.bac@gmail.com>
3Date: Mon, 26 Mar 2012 04:11:46 +0000
4Subject: [PATCH 54/60] USB: Add Motorola Rokr E6 Id to the USBNet driver
5 "zaurus"
6
7commit a2daf263107ba3eb6db33931881731fa51c95045 upstream.
8
9Added Vendor/Device Id of Motorola Rokr E6 (22b8:6027) so it can be
10recognized by the "zaurus" USBNet driver.
11Applies to Linux 3.2.13 and 2.6.39.4.
12Signed-off-by: Guan Xin <guanx.bac@gmail.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/net/usb/zaurus.c | 5 +++++
17 1 file changed, 5 insertions(+)
18
19diff --git a/drivers/net/usb/zaurus.c b/drivers/net/usb/zaurus.c
20index 246b3bb..c1e6a44 100644
21--- a/drivers/net/usb/zaurus.c
22+++ b/drivers/net/usb/zaurus.c
23@@ -332,6 +332,11 @@ static const struct usb_device_id products [] = {
24 .driver_info = ZAURUS_PXA_INFO,
25 },
26 {
27+ /* Motorola Rokr E6 */
28+ USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6027, USB_CLASS_COMM,
29+ USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
30+ .driver_info = (unsigned long) &bogus_mdlm_info,
31+}, {
32 /* Motorola MOTOMAGX phones */
33 USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6425, USB_CLASS_COMM,
34 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch
new file mode 100644
index 00000000..8dc9becd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch
@@ -0,0 +1,209 @@
1From 5c626e88cf0666b3663b56cdd9c43daff62153cd Mon Sep 17 00:00:00 2001
2From: Dan Williams <dan.j.williams@intel.com>
3Date: Fri, 23 Mar 2012 13:36:42 -0700
4Subject: [PATCH 55/60] ioat: fix size of 'completion' for Xen
5
6commit 275029353953c2117941ade84f02a2303912fad1 upstream.
7
8Starting with v3.2 Jonathan reports that Xen crashes loading the ioatdma
9driver. A debug run shows:
10
11 ioatdma 0000:00:16.4: desc[0]: (0x300cc7000->0x300cc7040) cookie: 0 flags: 0x2 ctl: 0x29 (op: 0 int_en: 1 compl: 1)
12 ...
13 ioatdma 0000:00:16.4: ioat_get_current_completion: phys_complete: 0xcc7000
14
15...which shows that in this environment GFP_KERNEL memory may be backed
16by a 64-bit dma address. This breaks the driver's assumption that an
17unsigned long should be able to contain the physical address for
18descriptor memory. Switch to dma_addr_t which beyond being the right
19size, is the true type for the data i.e. an io-virtual address
20inidicating the engine's last processed descriptor.
21
22Reported-by: Jonathan Nieder <jrnieder@gmail.com>
23Reported-by: William Dauchy <wdauchy@gmail.com>
24Tested-by: William Dauchy <wdauchy@gmail.com>
25Tested-by: Dave Jiang <dave.jiang@intel.com>
26Signed-off-by: Dan Williams <dan.j.williams@intel.com>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/dma/ioat/dma.c | 16 ++++++++--------
30 drivers/dma/ioat/dma.h | 6 +++---
31 drivers/dma/ioat/dma_v2.c | 8 ++++----
32 drivers/dma/ioat/dma_v3.c | 8 ++++----
33 4 files changed, 19 insertions(+), 19 deletions(-)
34
35diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
36index a4d6cb0..6595180 100644
37--- a/drivers/dma/ioat/dma.c
38+++ b/drivers/dma/ioat/dma.c
39@@ -548,9 +548,9 @@ void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags,
40 PCI_DMA_TODEVICE, flags, 0);
41 }
42
43-unsigned long ioat_get_current_completion(struct ioat_chan_common *chan)
44+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan)
45 {
46- unsigned long phys_complete;
47+ dma_addr_t phys_complete;
48 u64 completion;
49
50 completion = *chan->completion;
51@@ -571,7 +571,7 @@ unsigned long ioat_get_current_completion(struct ioat_chan_common *chan)
52 }
53
54 bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
55- unsigned long *phys_complete)
56+ dma_addr_t *phys_complete)
57 {
58 *phys_complete = ioat_get_current_completion(chan);
59 if (*phys_complete == chan->last_completion)
60@@ -582,14 +582,14 @@ bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
61 return true;
62 }
63
64-static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete)
65+static void __cleanup(struct ioat_dma_chan *ioat, dma_addr_t phys_complete)
66 {
67 struct ioat_chan_common *chan = &ioat->base;
68 struct list_head *_desc, *n;
69 struct dma_async_tx_descriptor *tx;
70
71- dev_dbg(to_dev(chan), "%s: phys_complete: %lx\n",
72- __func__, phys_complete);
73+ dev_dbg(to_dev(chan), "%s: phys_complete: %llx\n",
74+ __func__, (unsigned long long) phys_complete);
75 list_for_each_safe(_desc, n, &ioat->used_desc) {
76 struct ioat_desc_sw *desc;
77
78@@ -655,7 +655,7 @@ static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete)
79 static void ioat1_cleanup(struct ioat_dma_chan *ioat)
80 {
81 struct ioat_chan_common *chan = &ioat->base;
82- unsigned long phys_complete;
83+ dma_addr_t phys_complete;
84
85 prefetch(chan->completion);
86
87@@ -701,7 +701,7 @@ static void ioat1_timer_event(unsigned long data)
88 mod_timer(&chan->timer, jiffies + COMPLETION_TIMEOUT);
89 spin_unlock_bh(&ioat->desc_lock);
90 } else if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
91- unsigned long phys_complete;
92+ dma_addr_t phys_complete;
93
94 spin_lock_bh(&ioat->desc_lock);
95 /* if we haven't made progress and we have already
96diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
97index 5216c8a..8bebddd 100644
98--- a/drivers/dma/ioat/dma.h
99+++ b/drivers/dma/ioat/dma.h
100@@ -88,7 +88,7 @@ struct ioatdma_device {
101 struct ioat_chan_common {
102 struct dma_chan common;
103 void __iomem *reg_base;
104- unsigned long last_completion;
105+ dma_addr_t last_completion;
106 spinlock_t cleanup_lock;
107 dma_cookie_t completed_cookie;
108 unsigned long state;
109@@ -333,7 +333,7 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device);
110 void __devexit ioat_dma_remove(struct ioatdma_device *device);
111 struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev,
112 void __iomem *iobase);
113-unsigned long ioat_get_current_completion(struct ioat_chan_common *chan);
114+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan);
115 void ioat_init_channel(struct ioatdma_device *device,
116 struct ioat_chan_common *chan, int idx);
117 enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie,
118@@ -341,7 +341,7 @@ enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie,
119 void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags,
120 size_t len, struct ioat_dma_descriptor *hw);
121 bool ioat_cleanup_preamble(struct ioat_chan_common *chan,
122- unsigned long *phys_complete);
123+ dma_addr_t *phys_complete);
124 void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type);
125 void ioat_kobject_del(struct ioatdma_device *device);
126 extern const struct sysfs_ops ioat_sysfs_ops;
127diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
128index 5d65f83..cb8864d 100644
129--- a/drivers/dma/ioat/dma_v2.c
130+++ b/drivers/dma/ioat/dma_v2.c
131@@ -126,7 +126,7 @@ static void ioat2_start_null_desc(struct ioat2_dma_chan *ioat)
132 spin_unlock_bh(&ioat->prep_lock);
133 }
134
135-static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
136+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete)
137 {
138 struct ioat_chan_common *chan = &ioat->base;
139 struct dma_async_tx_descriptor *tx;
140@@ -178,7 +178,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
141 static void ioat2_cleanup(struct ioat2_dma_chan *ioat)
142 {
143 struct ioat_chan_common *chan = &ioat->base;
144- unsigned long phys_complete;
145+ dma_addr_t phys_complete;
146
147 spin_lock_bh(&chan->cleanup_lock);
148 if (ioat_cleanup_preamble(chan, &phys_complete))
149@@ -259,7 +259,7 @@ int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo)
150 static void ioat2_restart_channel(struct ioat2_dma_chan *ioat)
151 {
152 struct ioat_chan_common *chan = &ioat->base;
153- unsigned long phys_complete;
154+ dma_addr_t phys_complete;
155
156 ioat2_quiesce(chan, 0);
157 if (ioat_cleanup_preamble(chan, &phys_complete))
158@@ -274,7 +274,7 @@ void ioat2_timer_event(unsigned long data)
159 struct ioat_chan_common *chan = &ioat->base;
160
161 if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
162- unsigned long phys_complete;
163+ dma_addr_t phys_complete;
164 u64 status;
165
166 status = ioat_chansts(chan);
167diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
168index f519c93..2dbf32b 100644
169--- a/drivers/dma/ioat/dma_v3.c
170+++ b/drivers/dma/ioat/dma_v3.c
171@@ -256,7 +256,7 @@ static bool desc_has_ext(struct ioat_ring_ent *desc)
172 * The difference from the dma_v2.c __cleanup() is that this routine
173 * handles extended descriptors and dma-unmapping raid operations.
174 */
175-static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
176+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete)
177 {
178 struct ioat_chan_common *chan = &ioat->base;
179 struct ioat_ring_ent *desc;
180@@ -314,7 +314,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
181 static void ioat3_cleanup(struct ioat2_dma_chan *ioat)
182 {
183 struct ioat_chan_common *chan = &ioat->base;
184- unsigned long phys_complete;
185+ dma_addr_t phys_complete;
186
187 spin_lock_bh(&chan->cleanup_lock);
188 if (ioat_cleanup_preamble(chan, &phys_complete))
189@@ -333,7 +333,7 @@ static void ioat3_cleanup_event(unsigned long data)
190 static void ioat3_restart_channel(struct ioat2_dma_chan *ioat)
191 {
192 struct ioat_chan_common *chan = &ioat->base;
193- unsigned long phys_complete;
194+ dma_addr_t phys_complete;
195
196 ioat2_quiesce(chan, 0);
197 if (ioat_cleanup_preamble(chan, &phys_complete))
198@@ -348,7 +348,7 @@ static void ioat3_timer_event(unsigned long data)
199 struct ioat_chan_common *chan = &ioat->base;
200
201 if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) {
202- unsigned long phys_complete;
203+ dma_addr_t phys_complete;
204 u64 status;
205
206 status = ioat_chansts(chan);
207--
2081.7.9.5
209
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch
new file mode 100644
index 00000000..c534626c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch
@@ -0,0 +1,34 @@
1From ef89a7b5f82deaac432a4a797155b199d7d39c67 Mon Sep 17 00:00:00 2001
2From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
3Date: Wed, 4 Apr 2012 23:28:01 -0700
4Subject: [PATCH 56/60] ASoC: ak4642: fixup: mute needs +1 step
5
6commit 1f99e44cf059d2ed43c5a0724fa738b83800f725 upstream.
7
8ak4642 out_tlv is +12.0dB to -115.0 dB, and it supports mute.
9But current settings didn't care +1 step for mute.
10This patch adds it
11
12Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
13Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 sound/soc/codecs/ak4642.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
20index 12c1bde..1c4999d 100644
21--- a/sound/soc/codecs/ak4642.c
22+++ b/sound/soc/codecs/ak4642.c
23@@ -144,7 +144,7 @@
24 * min : 0xFE : -115.0 dB
25 * mute: 0xFF
26 */
27-static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1);
28+static const DECLARE_TLV_DB_SCALE(out_tlv, -11550, 50, 1);
29
30 static const struct snd_kcontrol_new ak4642_snd_controls[] = {
31
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch
new file mode 100644
index 00000000..df101f89
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch
@@ -0,0 +1,44 @@
1From 58063126ba5d427e0dae0e9319f5dabb5aeee22f Mon Sep 17 00:00:00 2001
2From: Oleg Nesterov <oleg@redhat.com>
3Date: Mon, 9 Apr 2012 21:03:50 +0200
4Subject: [PATCH 57/60] cred: copy_process() should clear
5 child->replacement_session_keyring
6
7commit 79549c6dfda0603dba9a70a53467ce62d9335c33 upstream.
8
9keyctl_session_to_parent(task) sets ->replacement_session_keyring,
10it should be processed and cleared by key_replace_session_keyring().
11
12However, this task can fork before it notices TIF_NOTIFY_RESUME and
13the new child gets the bogus ->replacement_session_keyring copied by
14dup_task_struct(). This is obviously wrong and, if nothing else, this
15leads to put_cred(already_freed_cred).
16
17change copy_creds() to clear this member. If copy_process() fails
18before this point the wrong ->replacement_session_keyring doesn't
19matter, exit_creds() won't be called.
20
21Signed-off-by: Oleg Nesterov <oleg@redhat.com>
22Acked-by: David Howells <dhowells@redhat.com>
23Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 kernel/cred.c | 2 ++
27 1 file changed, 2 insertions(+)
28
29diff --git a/kernel/cred.c b/kernel/cred.c
30index 5791612..48c6fd3 100644
31--- a/kernel/cred.c
32+++ b/kernel/cred.c
33@@ -385,6 +385,8 @@ int copy_creds(struct task_struct *p, unsigned long clone_flags)
34 struct cred *new;
35 int ret;
36
37+ p->replacement_session_keyring = NULL;
38+
39 if (
40 #ifdef CONFIG_KEYS
41 !p->cred->thread_keyring &&
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch
new file mode 100644
index 00000000..9b5e63a7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch
@@ -0,0 +1,76 @@
1From 94a56d3bf83bb9f3876415b7e6eea80877e10c16 Mon Sep 17 00:00:00 2001
2From: Joerg Roedel <joerg.roedel@amd.com>
3Date: Wed, 11 Apr 2012 18:40:38 +0200
4Subject: [PATCH 58/60] iommu/amd: Make sure IOMMU interrupts are re-enabled
5 on resume
6
7commit 9ddd592a191b32f2ee6c4b6ed2bd52665c3a49f5 upstream
8
9Unfortunatly the interrupts for the event log and the
10peripheral page-faults are only enabled at boot but not
11re-enabled at resume. Fix that for 3.2.
12
13Cc: stable@vger.kernel.org
14Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
15---
16 drivers/iommu/amd_iommu_init.c | 24 +++++++++++++++++-------
17 1 file changed, 17 insertions(+), 7 deletions(-)
18
19diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
20index 5c74179..20d5852 100644
21--- a/drivers/iommu/amd_iommu_init.c
22+++ b/drivers/iommu/amd_iommu_init.c
23@@ -1033,8 +1033,9 @@ static int iommu_setup_msi(struct amd_iommu *iommu)
24 {
25 int r;
26
27- if (pci_enable_msi(iommu->dev))
28- return 1;
29+ r = pci_enable_msi(iommu->dev);
30+ if (r)
31+ return r;
32
33 r = request_threaded_irq(iommu->dev->irq,
34 amd_iommu_int_handler,
35@@ -1044,24 +1045,33 @@ static int iommu_setup_msi(struct amd_iommu *iommu)
36
37 if (r) {
38 pci_disable_msi(iommu->dev);
39- return 1;
40+ return r;
41 }
42
43 iommu->int_enabled = true;
44- iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
45
46 return 0;
47 }
48
49 static int iommu_init_msi(struct amd_iommu *iommu)
50 {
51+ int ret;
52+
53 if (iommu->int_enabled)
54- return 0;
55+ goto enable_faults;
56
57 if (pci_find_capability(iommu->dev, PCI_CAP_ID_MSI))
58- return iommu_setup_msi(iommu);
59+ ret = iommu_setup_msi(iommu);
60+ else
61+ ret = -ENODEV;
62
63- return 1;
64+ if (ret)
65+ return ret;
66+
67+enable_faults:
68+ iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
69+
70+ return 0;
71 }
72
73 /****************************************************************************
74--
751.7.9.5
76
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch
new file mode 100644
index 00000000..673bcc93
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch
@@ -0,0 +1,43 @@
1From 263961fa56c27b335c9598d7204e004893480253 Mon Sep 17 00:00:00 2001
2From: Peter Hurley <peter@hurleysoftware.com>
3Date: Mon, 2 Apr 2012 13:44:56 +0200
4Subject: [PATCH 59/60] Bluetooth: Fix l2cap conn failures for ssp devices
5
6commit 18daf1644e634bae951a6e3d4d19d89170209762 upstream
7
8Commit 330605423c fixed l2cap conn establishment for non-ssp remote
9devices by not setting HCI_CONN_ENCRYPT_PEND every time conn security
10is tested (which was always returning failure on any subsequent
11security checks).
12
13However, this broke l2cap conn establishment for ssp remote devices
14when an ACL link was already established at SDP-level security. This
15fix ensures that encryption must be pending whenever authentication
16is also pending.
17
18Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
19Tested-by: Daniel Wagner <daniel.wagner@bmw-carit.de>
20Acked-by: Marcel Holtmann <marcel@holtmann.org>
21Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
22---
23 net/bluetooth/hci_conn.c | 4 ++++
24 1 file changed, 4 insertions(+)
25
26diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
27index c1c597e..98bfbd5 100644
28--- a/net/bluetooth/hci_conn.c
29+++ b/net/bluetooth/hci_conn.c
30@@ -608,6 +608,10 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
31
32 if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
33 struct hci_cp_auth_requested cp;
34+
35+ /* encrypt must be pending if auth is also pending */
36+ set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
37+
38 cp.handle = cpu_to_le16(conn->handle);
39 hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
40 sizeof(cp), &cp);
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch
new file mode 100644
index 00000000..2127a27a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.15/0060-Linux-3.2.15.patch
@@ -0,0 +1,24 @@
1From f7e832912de7d193a1185b9f1440111cbd1dbc46 Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3Date: Fri, 13 Apr 2012 09:11:03 -0700
4Subject: [PATCH 60/60] Linux 3.2.15
5
6---
7 Makefile | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/Makefile b/Makefile
11index afe4c7d..6195122 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 14
18+SUBLEVEL = 15
19 EXTRAVERSION =
20 NAME = Saber-toothed Squirrel
21
22--
231.7.9.5
24
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch
new file mode 100644
index 00000000..4dcea848
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch
@@ -0,0 +1,50 @@
1From 0e9a6694305d6e8a9afd0e0f67e9fa430f4a913d Mon Sep 17 00:00:00 2001
2From: Jesse Barnes <jbarnes@virtuousgeek.org>
3Date: Thu, 12 Jan 2012 14:51:17 -0800
4Subject: [PATCH 01/69] drm/i915: mask transcoder select bits before setting
5 them on LVDS
6
7commit 7885d2052bd94395e337709cfba093a41f273ff1 upstream.
8
9The transcoder port may changed from mode set to mode set, so make sure
10to mask out the selection bits before setting the right ones or we'll
11get black screens when going from transcoder B to A.
12
13Tested-by: Vincent Vanackere <vincent.vanackere@gmail.com>
14Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
15Reviewed-by: Keith Packard <keithp@keithp.com>
16Signed-off-by: Keith Packard <keithp@keithp.com>
17Cc: Jonathan Nieder <jrnieder@gmail.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/gpu/drm/i915/intel_display.c | 13 ++++++++-----
21 1 file changed, 8 insertions(+), 5 deletions(-)
22
23diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
24index 9011f48..390768f 100644
25--- a/drivers/gpu/drm/i915/intel_display.c
26+++ b/drivers/gpu/drm/i915/intel_display.c
27@@ -5646,12 +5646,15 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
28 if (is_lvds) {
29 temp = I915_READ(PCH_LVDS);
30 temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;
31- if (HAS_PCH_CPT(dev))
32+ if (HAS_PCH_CPT(dev)) {
33+ temp &= ~PORT_TRANS_SEL_MASK;
34 temp |= PORT_TRANS_SEL_CPT(pipe);
35- else if (pipe == 1)
36- temp |= LVDS_PIPEB_SELECT;
37- else
38- temp &= ~LVDS_PIPEB_SELECT;
39+ } else {
40+ if (pipe == 1)
41+ temp |= LVDS_PIPEB_SELECT;
42+ else
43+ temp &= ~LVDS_PIPEB_SELECT;
44+ }
45
46 /* set the corresponsding LVDS_BORDER bit */
47 temp |= dev_priv->lvds_border_bits;
48--
491.7.9.5
50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch
new file mode 100644
index 00000000..7ac071f7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch
@@ -0,0 +1,39 @@
1From 039999fecc9cd2243a2322a5b2ba153f6bfe6703 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Tue, 3 Apr 2012 17:05:41 -0400
4Subject: [PATCH 02/69] drm/radeon/kms: fix DVO setup on some r4xx chips
5
6commit afceb9319f21b18ee3bc15ee9a5f92e18ef8a8c9 upstream.
7
8Some r4xx chips have the wrong frev in the
9DVOEncoderControl table. It should always be 1
10on r4xx. Fixes modesetting on DVO on r4xx chips
11with the bad frev.
12
13Reported by twied on #radeon.
14
15Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
16Signed-off-by: Dave Airlie <airlied@redhat.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/gpu/drm/radeon/atombios_encoders.c | 4 ++++
20 1 file changed, 4 insertions(+)
21
22diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
23index 0f8eb48..5351ee1 100644
24--- a/drivers/gpu/drm/radeon/atombios_encoders.c
25+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
26@@ -246,6 +246,10 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
27 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev))
28 return;
29
30+ /* some R4xx chips have the wrong frev */
31+ if (rdev->family <= CHIP_RV410)
32+ frev = 1;
33+
34 switch (frev) {
35 case 1:
36 switch (crev) {
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch
new file mode 100644
index 00000000..db337c42
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch
@@ -0,0 +1,34 @@
1From 6905e24cc8b935ca1db7f0af4ec3fe95ffd30122 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Mon, 9 Apr 2012 13:59:46 +0100
4Subject: [PATCH 03/69] drm/i915/ringbuffer: Exclude last 2 cachlines of ring
5 on 845g
6
7commit 27c1cbd06a7620b354cbb363834f3bb8df4f410d upstream.
8
9The 845g shares the errata with i830 whereby executing a command
10within 2 cachelines of the end of the ringbuffer may cause a GPU hang.
11
12Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
13Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/gpu/drm/i915/intel_ringbuffer.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
20index 30a9af9..8673581 100644
21--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
22+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
23@@ -1052,7 +1052,7 @@ int intel_init_ring_buffer(struct drm_device *dev,
24 * of the buffer.
25 */
26 ring->effective_size = ring->size;
27- if (IS_I830(ring->dev))
28+ if (IS_I830(ring->dev) || IS_845G(ring->dev))
29 ring->effective_size -= 128;
30
31 return 0;
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch
new file mode 100644
index 00000000..323eb1be
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch
@@ -0,0 +1,41 @@
1From 3168f6f46758c36d5b33ed5e77329bffed67033f Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Tue, 10 Apr 2012 12:14:27 -0400
4Subject: [PATCH 04/69] drm/radeon: only add the mm i2c bus if the hw_i2c
5 module param is set
6
7commit 46783150a6552f9513f08e62cfcc07125d6e502b upstream.
8
9It seems it can corrupt the monitor EDID in certain cases on certain
10boards when running sensors detect. It's rarely used anyway outside
11of AIW boards.
12
13http://lists.lm-sensors.org/pipermail/lm-sensors/2012-April/035847.html
14http://lists.freedesktop.org/archives/xorg/2011-January/052239.html
15
16Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
17Acked-by: Jean Delvare <khali@linux-fr.org>
18Signed-off-by: Dave Airlie <airlied@redhat.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/gpu/drm/radeon/radeon_i2c.c | 4 ++++
22 1 file changed, 4 insertions(+)
23
24diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c
25index 7bb1b07..1441b00 100644
26--- a/drivers/gpu/drm/radeon/radeon_i2c.c
27+++ b/drivers/gpu/drm/radeon/radeon_i2c.c
28@@ -890,6 +890,10 @@ struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev,
29 struct radeon_i2c_chan *i2c;
30 int ret;
31
32+ /* don't add the mm_i2c bus unless hw_i2c is enabled */
33+ if (rec->mm_i2c && (radeon_hw_i2c == 0))
34+ return NULL;
35+
36 i2c = kzalloc(sizeof(struct radeon_i2c_chan), GFP_KERNEL);
37 if (i2c == NULL)
38 return NULL;
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch
new file mode 100644
index 00000000..45e685a4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch
@@ -0,0 +1,130 @@
1From 95523fb19e6eea48b9c0632b81780268f386b22f Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Tue, 10 Apr 2012 10:42:36 +0200
4Subject: [PATCH 05/69] drm/i915: properly compute dp dithering for
5 user-created modes
6
7commit c4867936474183332db4c19791a65fdad6474fd5 upstream.
8
9We've only computed whether we need to fall back to 6bpc due to dp
10link bandwidth constrains in mode_valid, but not mode_fixup. Under
11various circumstances X likes to create new modes which then lack
12proper 6bpc flags (if required), resulting in mode_fixup failures and
13ultimately black screens.
14
15Chris Wilson pointed out that we still get things wrong for bpp > 24,
16but that should be fixed in another patch (and it'll be easier because
17this patch consolidates the logic).
18
19The likely culprit for this regression is
20
21commit 3d794f87238f74d80e78a7611c7fbde8a54c85c2
22Author: Keith Packard <keithp@keithp.com>
23Date: Wed Jan 25 08:16:25 2012 -0800
24
25 drm/i915: Force explicit bpp selection for intel_dp_link_required
26
27v2: Fix indentation and tune down the too bold claim that this should
28fix the world. Both noticed by Chris Wilson.
29
30v3: Try to really git add things.
31
32Reported-and-tested-by: Brice Goglin <Brice.Goglin@ens-lyon.org>
33Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48170
34Cc: stable@kernel.org
35Reviewed-by: Adam Jackson <ajax@redhat.com>
36Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
37Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
38---
39 drivers/gpu/drm/i915/intel_dp.c | 49 ++++++++++++++++++++++++++++-----------
40 1 file changed, 35 insertions(+), 14 deletions(-)
41
42diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
43index 94f860c..12eb789 100644
44--- a/drivers/gpu/drm/i915/intel_dp.c
45+++ b/drivers/gpu/drm/i915/intel_dp.c
46@@ -219,14 +219,38 @@ intel_dp_max_data_rate(int max_link_clock, int max_lanes)
47 return (max_link_clock * max_lanes * 8) / 10;
48 }
49
50+static bool
51+intel_dp_adjust_dithering(struct intel_dp *intel_dp,
52+ struct drm_display_mode *mode,
53+ struct drm_display_mode *adjusted_mode)
54+{
55+ int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
56+ int max_lanes = intel_dp_max_lane_count(intel_dp);
57+ int max_rate, mode_rate;
58+
59+ mode_rate = intel_dp_link_required(mode->clock, 24);
60+ max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
61+
62+ if (mode_rate > max_rate) {
63+ mode_rate = intel_dp_link_required(mode->clock, 18);
64+ if (mode_rate > max_rate)
65+ return false;
66+
67+ if (adjusted_mode)
68+ adjusted_mode->private_flags
69+ |= INTEL_MODE_DP_FORCE_6BPC;
70+
71+ return true;
72+ }
73+
74+ return true;
75+}
76+
77 static int
78 intel_dp_mode_valid(struct drm_connector *connector,
79 struct drm_display_mode *mode)
80 {
81 struct intel_dp *intel_dp = intel_attached_dp(connector);
82- int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
83- int max_lanes = intel_dp_max_lane_count(intel_dp);
84- int max_rate, mode_rate;
85
86 if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
87 if (mode->hdisplay > intel_dp->panel_fixed_mode->hdisplay)
88@@ -236,16 +260,8 @@ intel_dp_mode_valid(struct drm_connector *connector,
89 return MODE_PANEL;
90 }
91
92- mode_rate = intel_dp_link_required(mode->clock, 24);
93- max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
94-
95- if (mode_rate > max_rate) {
96- mode_rate = intel_dp_link_required(mode->clock, 18);
97- if (mode_rate > max_rate)
98- return MODE_CLOCK_HIGH;
99- else
100- mode->private_flags |= INTEL_MODE_DP_FORCE_6BPC;
101- }
102+ if (!intel_dp_adjust_dithering(intel_dp, mode, NULL))
103+ return MODE_CLOCK_HIGH;
104
105 if (mode->clock < 10000)
106 return MODE_CLOCK_LOW;
107@@ -673,7 +689,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
108 int lane_count, clock;
109 int max_lane_count = intel_dp_max_lane_count(intel_dp);
110 int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
111- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
112+ int bpp;
113 static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
114
115 if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
116@@ -687,6 +703,11 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
117 mode->clock = intel_dp->panel_fixed_mode->clock;
118 }
119
120+ if (!intel_dp_adjust_dithering(intel_dp, mode, adjusted_mode))
121+ return false;
122+
123+ bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
124+
125 for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
126 for (clock = 0; clock <= max_clock; clock++) {
127 int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
128--
1291.7.9.5
130
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch
new file mode 100644
index 00000000..79340e1e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch
@@ -0,0 +1,32 @@
1From f6810569f5eea5dd63a4be4fdcf052ab08d4f7fa Mon Sep 17 00:00:00 2001
2From: Jesse Barnes <jbarnes@virtuousgeek.org>
3Date: Wed, 11 Apr 2012 09:39:02 -0700
4Subject: [PATCH 06/69] drm/i915: make rc6 module parameter read-only
5
6commit f57f9c167af7cb3fd315e6a8ebe194a8aea0832a upstream.
7
8People have been getting confused and thinking this is a runtime control.
9
10Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
11Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13---
14 drivers/gpu/drm/i915/i915_drv.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
18index e52b705..d0f8830 100644
19--- a/drivers/gpu/drm/i915/i915_drv.c
20+++ b/drivers/gpu/drm/i915/i915_drv.c
21@@ -64,7 +64,7 @@ MODULE_PARM_DESC(semaphores,
22 "Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))");
23
24 int i915_enable_rc6 __read_mostly = -1;
25-module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600);
26+module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0400);
27 MODULE_PARM_DESC(i915_enable_rc6,
28 "Enable power-saving render C-state 6 (default: -1 (use per-chip default)");
29
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch
new file mode 100644
index 00000000..550db2eb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch
@@ -0,0 +1,45 @@
1From a8c85bb6818c1e5d3fec8904cae9a851ed700bb6 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Mon, 26 Mar 2012 10:48:20 -0500
4Subject: [PATCH 07/69] rtlwifi: Add missing DMA buffer unmapping for PCI
5 drivers
6
7commit 673f7786e205c87b5d978c62827b9a66d097bebb upstream.
8
9In https://bugzilla.kernel.org/show_bug.cgi?id=42976, a system with driver
10rtl8192se used as an AP suffers from "Out of SW-IOMMU space" errors. These
11are caused by the DMA buffers used for beacons never being unmapped.
12
13This bug was also reported at
14https://bugs.launchpad.net/ubuntu/+source/linux/+bug/961618
15
16Reported-and-Tested-by: Da Xue <da@lessconfused.com>
17Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
18Signed-off-by: John W. Linville <linville@tuxdriver.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/net/wireless/rtlwifi/pci.c | 7 ++++++-
22 1 file changed, 6 insertions(+), 1 deletion(-)
23
24diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
25index 9afcad3..d44d398 100644
26--- a/drivers/net/wireless/rtlwifi/pci.c
27+++ b/drivers/net/wireless/rtlwifi/pci.c
28@@ -926,8 +926,13 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw)
29 memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc));
30 ring = &rtlpci->tx_ring[BEACON_QUEUE];
31 pskb = __skb_dequeue(&ring->queue);
32- if (pskb)
33+ if (pskb) {
34+ struct rtl_tx_desc *entry = &ring->desc[ring->idx];
35+ pci_unmap_single(rtlpci->pdev, rtlpriv->cfg->ops->get_desc(
36+ (u8 *) entry, true, HW_DESC_TXBUFF_ADDR),
37+ pskb->len, PCI_DMA_TODEVICE);
38 kfree_skb(pskb);
39+ }
40
41 /*NB: the beacon data buffer must be 32-bit aligned. */
42 pskb = ieee80211_beacon_get(hw, mac->vif);
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch
new file mode 100644
index 00000000..4f0dc10a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch
@@ -0,0 +1,37 @@
1From a1e9b9702554dae713f7344f8d357ac261a3a0d7 Mon Sep 17 00:00:00 2001
2From: Marc Zyngier <Marc.Zyngier@arm.com>
3Date: Wed, 11 Apr 2012 14:52:55 +0100
4Subject: [PATCH 08/69] ARM: 7379/1: DT: fix atags_to_fdt() second call site
5
6commit 9c5fd9e85f574d9d0361b2b878f55732290afe5b upstream.
7
8atags_to_fdt() returns 1 when it fails to find a valid FDT signature.
9The CONFIG_ARM_ATAG_DTB_COMPAT code is supposed to retry with another
10location, but only does so when the initial call doesn't fail.
11
12Fix this by using the correct condition in the assembly code.
13
14Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
15Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
16Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 arch/arm/boot/compressed/head.S | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
23index c2effc9..9c18ebd 100644
24--- a/arch/arm/boot/compressed/head.S
25+++ b/arch/arm/boot/compressed/head.S
26@@ -273,7 +273,7 @@ restart: adr r0, LC0
27 add r0, r0, #0x100
28 mov r1, r6
29 sub r2, sp, r6
30- blne atags_to_fdt
31+ bleq atags_to_fdt
32
33 ldmfd sp!, {r0-r3, ip, lr}
34 sub sp, sp, #0x10000
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch
new file mode 100644
index 00000000..19d9a23d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch
@@ -0,0 +1,54 @@
1From f57d472183a16e61832110d6cdb7a410802c0c34 Mon Sep 17 00:00:00 2001
2From: Jonathan Austin <Jonathan.Austin@arm.com>
3Date: Thu, 12 Apr 2012 17:45:25 +0100
4Subject: [PATCH 09/69] ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access
5 for !CONFIG_ARM_THUMBEE
6
7commit 078c04545ba56da21567728a909a496df5ff730d upstream.
8
9Currently when ThumbEE is not enabled (!CONFIG_ARM_THUMBEE) the ThumbEE
10register states are not saved/restored at context switch. The default state
11of the ThumbEE Ctrl register (TEECR) allows userspace accesses to the
12ThumbEE Base Handler register (TEEHBR). This can cause unexpected behaviour
13when people use ThumbEE on !CONFIG_ARM_THUMBEE kernels, as well as allowing
14covert communication - eg between userspace tasks running inside chroot
15jails.
16
17This patch sets up TEECR in order to prevent user-space access to TEEHBR
18when !CONFIG_ARM_THUMBEE. In this case, tasks are sent SIGILL if they try to
19access TEEHBR.
20
21Reviewed-by: Will Deacon <will.deacon@arm.com>
22Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
23Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 arch/arm/mm/proc-v7.S | 12 ++++++++++++
27 1 file changed, 12 insertions(+)
28
29diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
30index 82ef81d..785365e 100644
31--- a/arch/arm/mm/proc-v7.S
32+++ b/arch/arm/mm/proc-v7.S
33@@ -382,6 +382,18 @@ __v7_setup:
34 mcr p15, 0, r5, c10, c2, 0 @ write PRRR
35 mcr p15, 0, r6, c10, c2, 1 @ write NMRR
36 #endif
37+#ifndef CONFIG_ARM_THUMBEE
38+ mrc p15, 0, r0, c0, c1, 0 @ read ID_PFR0 for ThumbEE
39+ and r0, r0, #(0xf << 12) @ ThumbEE enabled field
40+ teq r0, #(1 << 12) @ check if ThumbEE is present
41+ bne 1f
42+ mov r5, #0
43+ mcr p14, 6, r5, c1, c0, 0 @ Initialize TEEHBR to 0
44+ mrc p14, 6, r0, c0, c0, 0 @ load TEECR
45+ orr r0, r0, #1 @ set the 1st bit in order to
46+ mcr p14, 6, r0, c0, c0, 0 @ stop userspace TEEHBR access
47+1:
48+#endif
49 adr r5, v7_crval
50 ldmia r5, {r5, r6}
51 #ifdef CONFIG_CPU_ENDIAN_BE8
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch
new file mode 100644
index 00000000..a80aa008
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch
@@ -0,0 +1,42 @@
1From 814a0921c841d7bb82d27dfccdafea9982420c24 Mon Sep 17 00:00:00 2001
2From: NeilBrown <neilb@suse.de>
3Date: Thu, 12 Apr 2012 16:05:06 +1000
4Subject: [PATCH 10/69] md/bitmap: prevent bitmap_daemon_work running while
5 initialising bitmap
6
7commit afbaa90b80b1ec66e5137cc3824746bfdf559b18 upstream.
8
9If a bitmap is added while the array is active, it is possible
10for bitmap_daemon_work to run while the bitmap is being
11initialised.
12This is particularly a problem if bitmap_daemon_work sees
13bitmap->filemap as non-NULL before it has been filled in properly.
14So hold bitmap_info.mutex while filling in ->filemap
15to prevent problems.
16
17This patch is suitable for any -stable kernel, though it might not
18apply cleanly before about 3.1.
19
20Signed-off-by: NeilBrown <neilb@suse.de>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/md/bitmap.c | 2 ++
24 1 file changed, 2 insertions(+)
25
26diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
27index 2a8722b..62a8e68 100644
28--- a/drivers/md/bitmap.c
29+++ b/drivers/md/bitmap.c
30@@ -1819,7 +1819,9 @@ int bitmap_load(struct mddev *mddev)
31 * re-add of a missing device */
32 start = mddev->recovery_cp;
33
34+ mutex_lock(&mddev->bitmap_info.mutex);
35 err = bitmap_init_from_disk(bitmap, start);
36+ mutex_unlock(&mddev->bitmap_info.mutex);
37
38 if (err)
39 goto out;
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch
new file mode 100644
index 00000000..a6ef289a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch
@@ -0,0 +1,51 @@
1From afeb2c0d484fb63fc8de83308f3ae74c9a607ad0 Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Wed, 11 Apr 2012 11:24:35 +0200
4Subject: [PATCH 11/69] Bluetooth: uart-ldisc: Fix memory leak
5
6This is a partial, self-contained, minimal backport of commit
7797fe796c4335b35d95d5326824513befdb5d1e9 upstream which fixes the memory
8leak:
9
10Bluetooth: uart-ldisc: Fix memory leak and remove destruct cb
11
12We currently leak the hci_uart object if HCI_UART_PROTO_SET is never set
13because the hci-destruct callback will then never be called. This fix
14removes the hci-destruct callback and frees the driver internal private
15hci_uart object directly on tty-close. We call hci_unregister_dev() here
16so the hci-core will never call our callbacks again (except destruct).
17Therefore, we can safely free the driver internal data right away and
18set the destruct callback to NULL.
19
20Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
21Acked-by: Marcel Holtmann <marcel@holtmann.org>
22Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
23Signed-off-by: Johan Hovold <jhovold@gmail.com>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/bluetooth/hci_ldisc.c | 2 +-
27 1 file changed, 1 insertion(+), 1 deletion(-)
28
29diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
30index 48ad2a7..36dafef 100644
31--- a/drivers/bluetooth/hci_ldisc.c
32+++ b/drivers/bluetooth/hci_ldisc.c
33@@ -237,7 +237,6 @@ static void hci_uart_destruct(struct hci_dev *hdev)
34 return;
35
36 BT_DBG("%s", hdev->name);
37- kfree(hdev->driver_data);
38 }
39
40 /* ------ LDISC part ------ */
41@@ -316,6 +315,7 @@ static void hci_uart_tty_close(struct tty_struct *tty)
42 hci_free_dev(hdev);
43 }
44 }
45+ kfree(hu);
46 }
47 }
48
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch
new file mode 100644
index 00000000..fdf52354
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch
@@ -0,0 +1,107 @@
1From 96e70b85a81d0c38ed66c1861711855a15428870 Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Thu, 15 Mar 2012 14:48:40 +0100
4Subject: [PATCH 12/69] Bluetooth: hci_ldisc: fix NULL-pointer dereference on
5 tty_close
6
7commit 33b69bf80a3704d45341928e4ff68b6ebd470686 upstream.
8
9Do not close protocol driver until device has been unregistered.
10
11This fixes a race between tty_close and hci_dev_open which can result in
12a NULL-pointer dereference.
13
14The line discipline closes the protocol driver while we may still have
15hci_dev_open sleeping on the req_lock mutex resulting in a NULL-pointer
16dereference when lock is acquired and hci_init_req called.
17
18Bug is 100% reproducible using hciattach and a disconnected serial port:
19
200. # hciattach -n ttyO1 any noflow
21
221. hci_dev_open called from hci_power_on grabs req lock
232. hci_init_req executes but device fails to initialise (times out
24 eventually)
253. hci_dev_open is called from hci_sock_ioctl and sleeps on req lock
264. hci_uart_tty_close detaches protocol driver and cancels init req
275. hci_dev_open (1) releases req lock
286. hci_dev_open (3) grabs req lock, calls hci_init_req, which triggers oops
29 when request is prepared in hci_uart_send_frame
30
31[ 137.201263] Unable to handle kernel NULL pointer dereference at virtual address 00000028
32[ 137.209838] pgd = c0004000
33[ 137.212677] [00000028] *pgd=00000000
34[ 137.216430] Internal error: Oops: 17 [#1]
35[ 137.220642] Modules linked in:
36[ 137.223846] CPU: 0 Tainted: G W (3.3.0-rc6-dirty #406)
37[ 137.230529] PC is at __lock_acquire+0x5c/0x1ab0
38[ 137.235290] LR is at lock_acquire+0x9c/0x128
39[ 137.239776] pc : [<c0071490>] lr : [<c00733f8>] psr: 20000093
40[ 137.239776] sp : cf869dd8 ip : c0529554 fp : c051c730
41[ 137.251800] r10: 00000000 r9 : cf8673c0 r8 : 00000080
42[ 137.257293] r7 : 00000028 r6 : 00000002 r5 : 00000000 r4 : c053fd70
43[ 137.264129] r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : 00000001
44[ 137.270965] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
45[ 137.278717] Control: 10c5387d Table: 8f0f4019 DAC: 00000015
46[ 137.284729] Process kworker/u:1 (pid: 7, stack limit = 0xcf8682e8)
47[ 137.291229] Stack: (0xcf869dd8 to 0xcf86a000)
48[ 137.295776] 9dc0: c0529554 00000000
49[ 137.304351] 9de0: cf8673c0 cf868000 d03ea1ef cf868000 000001ef 00000470 00000000 00000002
50[ 137.312927] 9e00: cf8673c0 00000001 c051c730 c00716ec 0000000c 00000440 c0529554 00000001
51[ 137.321533] 9e20: c051c730 cf868000 d03ea1f3 00000000 c053b978 00000000 00000028 cf868000
52[ 137.330078] 9e40: 00000000 00000000 00000002 00000000 00000000 c00733f8 00000002 00000080
53[ 137.338684] 9e60: 00000000 c02a1d50 00000000 00000001 60000013 c0969a1c 60000093 c053b96c
54[ 137.347259] 9e80: 00000002 00000018 20000013 c02a1d50 cf0ac000 00000000 00000002 cf868000
55[ 137.355834] 9ea0: 00000089 c0374130 00000002 00000000 c02a1d50 cf0ac000 0000000c cf0fc540
56[ 137.364410] 9ec0: 00000018 c02a1d50 cf0fc540 00000000 cf0fc540 c0282238 c028220c cf178d80
57[ 137.372985] 9ee0: 127525d8 c02821cc 9a1fa451 c032727c 9a1fa451 127525d8 cf0fc540 cf0ac4ec
58[ 137.381561] 9f00: cf0ac000 cf0fc540 cf0ac584 c03285f4 c0328580 cf0ac4ec cf85c740 c05510cc
59[ 137.390136] 9f20: ce825400 c004c914 00000002 00000000 c004c884 ce8254f5 cf869f48 00000000
60[ 137.398712] 9f40: c0328580 ce825415 c0a7f914 c061af64 00000000 c048cf3c cf8673c0 cf85c740
61[ 137.407287] 9f60: c05510cc c051a66c c05510ec c05510c4 cf85c750 cf868000 00000089 c004d6ac
62[ 137.415863] 9f80: 00000000 c0073d14 00000001 cf853ed8 cf85c740 c004d558 00000013 00000000
63[ 137.424438] 9fa0: 00000000 00000000 00000000 c00516b0 00000000 00000000 cf85c740 00000000
64[ 137.433013] 9fc0: 00000001 dead4ead ffffffff ffffffff c0551674 00000000 00000000 c0450aa4
65[ 137.441589] 9fe0: cf869fe0 cf869fe0 cf853ed8 c005162c c0013b30 c0013b30 00ffff00 00ffff00
66[ 137.450164] [<c0071490>] (__lock_acquire+0x5c/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
67[ 137.459503] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58)
68[ 137.469360] [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c02a1d50>] (skb_queue_tail+0x18/0x48)
69[ 137.479339] [<c02a1d50>] (skb_queue_tail+0x18/0x48) from [<c0282238>] (h4_enqueue+0x2c/0x34)
70[ 137.488189] [<c0282238>] (h4_enqueue+0x2c/0x34) from [<c02821cc>] (hci_uart_send_frame+0x34/0x68)
71[ 137.497497] [<c02821cc>] (hci_uart_send_frame+0x34/0x68) from [<c032727c>] (hci_send_frame+0x50/0x88)
72[ 137.507171] [<c032727c>] (hci_send_frame+0x50/0x88) from [<c03285f4>] (hci_cmd_work+0x74/0xd4)
73[ 137.516204] [<c03285f4>] (hci_cmd_work+0x74/0xd4) from [<c004c914>] (process_one_work+0x1a0/0x4ec)
74[ 137.525604] [<c004c914>] (process_one_work+0x1a0/0x4ec) from [<c004d6ac>] (worker_thread+0x154/0x344)
75[ 137.535278] [<c004d6ac>] (worker_thread+0x154/0x344) from [<c00516b0>] (kthread+0x84/0x90)
76[ 137.543975] [<c00516b0>] (kthread+0x84/0x90) from [<c0013b30>] (kernel_thread_exit+0x0/0x8)
77[ 137.552734] Code: e59f4e5c e5941000 e3510000 0a000031 (e5971000)
78[ 137.559234] ---[ end trace 1b75b31a2719ed1e ]---
79
80Signed-off-by: Johan Hovold <jhovold@gmail.com>
81Acked-by: Marcel Holtmann <marcel@holtmann.org>
82Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
83Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
84---
85 drivers/bluetooth/hci_ldisc.c | 2 +-
86 1 file changed, 1 insertion(+), 1 deletion(-)
87
88diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
89index 36dafef..8f3d6db 100644
90--- a/drivers/bluetooth/hci_ldisc.c
91+++ b/drivers/bluetooth/hci_ldisc.c
92@@ -309,11 +309,11 @@ static void hci_uart_tty_close(struct tty_struct *tty)
93 hci_uart_close(hdev);
94
95 if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
96- hu->proto->close(hu);
97 if (hdev) {
98 hci_unregister_dev(hdev);
99 hci_free_dev(hdev);
100 }
101+ hu->proto->close(hu);
102 }
103 kfree(hu);
104 }
105--
1061.7.9.5
107
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch
new file mode 100644
index 00000000..f084adcd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch
@@ -0,0 +1,93 @@
1From f1c04355902ab71e60c67f39ea29822d0eea062f Mon Sep 17 00:00:00 2001
2From: Theodore Ts'o <tytso@mit.edu>
3Date: Mon, 16 Apr 2012 12:16:20 -0400
4Subject: [PATCH 13/69] ext4: address scalability issue by removing extent
5 cache statistics
6
7commit 9cd70b347e9761ea2d2ac3d758c529a48a8193e6 upstream.
8
9Andi Kleen and Tim Chen have reported that under certain circumstances
10the extent cache statistics are causing scalability problems due to
11cache line bounces.
12
13Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 fs/ext4/ext4.h | 3 ---
17 fs/ext4/extents.c | 4 ----
18 fs/ext4/super.c | 16 ----------------
19 3 files changed, 23 deletions(-)
20
21diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
22index dbae4d9..7b1cd5c 100644
23--- a/fs/ext4/ext4.h
24+++ b/fs/ext4/ext4.h
25@@ -1185,9 +1185,6 @@ struct ext4_sb_info {
26 unsigned long s_ext_blocks;
27 unsigned long s_ext_extents;
28 #endif
29- /* ext4 extent cache stats */
30- unsigned long extent_cache_hits;
31- unsigned long extent_cache_misses;
32
33 /* for buddy allocator */
34 struct ext4_group_info ***s_group_info;
35diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
36index 7507036..c2a2012 100644
37--- a/fs/ext4/extents.c
38+++ b/fs/ext4/extents.c
39@@ -2052,10 +2052,6 @@ static int ext4_ext_check_cache(struct inode *inode, ext4_lblk_t block,
40 ret = 1;
41 }
42 errout:
43- if (!ret)
44- sbi->extent_cache_misses++;
45- else
46- sbi->extent_cache_hits++;
47 trace_ext4_ext_in_cache(inode, block, ret);
48 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock);
49 return ret;
50diff --git a/fs/ext4/super.c b/fs/ext4/super.c
51index 9281dbe..961059b 100644
52--- a/fs/ext4/super.c
53+++ b/fs/ext4/super.c
54@@ -2504,18 +2504,6 @@ static ssize_t lifetime_write_kbytes_show(struct ext4_attr *a,
55 EXT4_SB(sb)->s_sectors_written_start) >> 1)));
56 }
57
58-static ssize_t extent_cache_hits_show(struct ext4_attr *a,
59- struct ext4_sb_info *sbi, char *buf)
60-{
61- return snprintf(buf, PAGE_SIZE, "%lu\n", sbi->extent_cache_hits);
62-}
63-
64-static ssize_t extent_cache_misses_show(struct ext4_attr *a,
65- struct ext4_sb_info *sbi, char *buf)
66-{
67- return snprintf(buf, PAGE_SIZE, "%lu\n", sbi->extent_cache_misses);
68-}
69-
70 static ssize_t inode_readahead_blks_store(struct ext4_attr *a,
71 struct ext4_sb_info *sbi,
72 const char *buf, size_t count)
73@@ -2573,8 +2561,6 @@ static struct ext4_attr ext4_attr_##name = __ATTR(name, mode, show, store)
74 EXT4_RO_ATTR(delayed_allocation_blocks);
75 EXT4_RO_ATTR(session_write_kbytes);
76 EXT4_RO_ATTR(lifetime_write_kbytes);
77-EXT4_RO_ATTR(extent_cache_hits);
78-EXT4_RO_ATTR(extent_cache_misses);
79 EXT4_ATTR_OFFSET(inode_readahead_blks, 0644, sbi_ui_show,
80 inode_readahead_blks_store, s_inode_readahead_blks);
81 EXT4_RW_ATTR_SBI_UI(inode_goal, s_inode_goal);
82@@ -2590,8 +2576,6 @@ static struct attribute *ext4_attrs[] = {
83 ATTR_LIST(delayed_allocation_blocks),
84 ATTR_LIST(session_write_kbytes),
85 ATTR_LIST(lifetime_write_kbytes),
86- ATTR_LIST(extent_cache_hits),
87- ATTR_LIST(extent_cache_misses),
88 ATTR_LIST(inode_readahead_blks),
89 ATTR_LIST(inode_goal),
90 ATTR_LIST(mb_stats),
91--
921.7.9.5
93
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch
new file mode 100644
index 00000000..ac9d27d7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch
@@ -0,0 +1,58 @@
1From 31a9ac5149ad2b11b591eb704f3132d0d344e7e0 Mon Sep 17 00:00:00 2001
2From: "Luck, Tony" <tony.luck@intel.com>
3Date: Mon, 16 Apr 2012 16:28:01 -0700
4Subject: [PATCH 14/69] ia64: fix futex_atomic_cmpxchg_inatomic()
5
6commit c76f39bddb84f93f70a5520d9253ec0317bec216 upstream.
7
8Michel Lespinasse cleaned up the futex calling conventions in commit
937a9d912b24f ("futex: Sanitize cmpxchg_futex_value_locked API").
10
11But the ia64 implementation was subtly broken. Gcc does not know that
12register "r8" will be updated by the fault handler if the cmpxchg
13instruction takes an exception. So it feels safe in letting the
14initialization of r8 slide to after the cmpxchg. Result: we always
15return 0 whether the user address faulted or not.
16
17Fix by moving the initialization of r8 into the __asm__ code so gcc
18won't move it.
19
20Reported-by: <emeric.maschino@gmail.com>
21Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42757
22Tested-by: <emeric.maschino@gmail.com>
23Acked-by: Michel Lespinasse <walken@google.com>
24Signed-off-by: Tony Luck <tony.luck@intel.com>
25Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 arch/ia64/include/asm/futex.h | 9 +++++----
29 1 file changed, 5 insertions(+), 4 deletions(-)
30
31diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h
32index 8428525..21ab376 100644
33--- a/arch/ia64/include/asm/futex.h
34+++ b/arch/ia64/include/asm/futex.h
35@@ -107,15 +107,16 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
36 return -EFAULT;
37
38 {
39- register unsigned long r8 __asm ("r8") = 0;
40+ register unsigned long r8 __asm ("r8");
41 unsigned long prev;
42 __asm__ __volatile__(
43 " mf;; \n"
44- " mov ar.ccv=%3;; \n"
45- "[1:] cmpxchg4.acq %0=[%1],%2,ar.ccv \n"
46+ " mov %0=r0 \n"
47+ " mov ar.ccv=%4;; \n"
48+ "[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n"
49 " .xdata4 \"__ex_table\", 1b-., 2f-. \n"
50 "[2:]"
51- : "=r" (prev)
52+ : "=r" (r8), "=r" (prev)
53 : "r" (uaddr), "r" (newval),
54 "rO" ((long) (unsigned) oldval)
55 : "memory");
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch
new file mode 100644
index 00000000..7990dfe2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch
@@ -0,0 +1,39 @@
1From a5333b50b8a4297f3b9959366fb26ad9b9c55314 Mon Sep 17 00:00:00 2001
2From: Linus Walleij <linus.walleij@linaro.org>
3Date: Thu, 12 Apr 2012 12:49:16 -0700
4Subject: [PATCH 15/69] drivers/rtc/rtc-pl031.c: enable clock on all ST
5 variants
6
7commit 2f3972168353d355854d6381f1f360ce83b723e5 upstream.
8
9The ST variants of the PL031 all require bit 26 in the control register
10to be set before they work properly. Discovered this when testing on
11the Nomadik board where it would suprisingly just stand still.
12
13Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
14Cc: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
15Cc: Alessandro Rubini <rubini@unipv.it>
16Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
17Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/rtc/rtc-pl031.c | 3 +--
21 1 file changed, 1 insertion(+), 2 deletions(-)
22
23diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
24index ff1b84b..e86edfc 100644
25--- a/drivers/rtc/rtc-pl031.c
26+++ b/drivers/rtc/rtc-pl031.c
27@@ -339,8 +339,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
28 dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision);
29
30 /* Enable the clockwatch on ST Variants */
31- if ((ldata->hw_designer == AMBA_VENDOR_ST) &&
32- (ldata->hw_revision > 1))
33+ if (ldata->hw_designer == AMBA_VENDOR_ST)
34 writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
35 ldata->base + RTC_CR);
36
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch
new file mode 100644
index 00000000..5b93b531
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch
@@ -0,0 +1,89 @@
1From 7295297274cc9506d1600eb09ab93f203e860f48 Mon Sep 17 00:00:00 2001
2From: Chris Metcalf <cmetcalf@tilera.com>
3Date: Thu, 12 Apr 2012 12:49:15 -0700
4Subject: [PATCH 16/69] hugetlb: fix race condition in hugetlb_fault()
5
6commit 66aebce747eaf9bc456bf1f1b217d8db843031d0 upstream.
7
8The race is as follows:
9
10Suppose a multi-threaded task forks a new process (on cpu A), thus
11bumping up the ref count on all the pages. While the fork is occurring
12(and thus we have marked all the PTEs as read-only), another thread in
13the original process (on cpu B) tries to write to a huge page, taking an
14access violation from the write-protect and calling hugetlb_cow(). Now,
15suppose the fork() fails. It will undo the COW and decrement the ref
16count on the pages, so the ref count on the huge page drops back to 1.
17Meanwhile hugetlb_cow() also decrements the ref count by one on the
18original page, since the original address space doesn't need it any
19more, having copied a new page to replace the original page. This
20leaves the ref count at zero, and when we call unlock_page(), we panic.
21
22 fork on CPU A fault on CPU B
23 ============= ==============
24 ...
25 down_write(&parent->mmap_sem);
26 down_write_nested(&child->mmap_sem);
27 ...
28 while duplicating vmas
29 if error
30 break;
31 ...
32 up_write(&child->mmap_sem);
33 up_write(&parent->mmap_sem); ...
34 down_read(&parent->mmap_sem);
35 ...
36 lock_page(page);
37 handle COW
38 page_mapcount(old_page) == 2
39 alloc and prepare new_page
40 ...
41 handle error
42 page_remove_rmap(page);
43 put_page(page);
44 ...
45 fold new_page into pte
46 page_remove_rmap(page);
47 put_page(page);
48 ...
49 oops ==> unlock_page(page);
50 up_read(&parent->mmap_sem);
51
52The solution is to take an extra reference to the page while we are
53holding the lock on it.
54
55Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
56Cc: Hillf Danton <dhillf@gmail.com>
57Cc: Michal Hocko <mhocko@suse.cz>
58Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
59Cc: Hugh Dickins <hughd@google.com>
60Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
61Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
62Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
63---
64 mm/hugetlb.c | 2 ++
65 1 file changed, 2 insertions(+)
66
67diff --git a/mm/hugetlb.c b/mm/hugetlb.c
68index 2316840..bd936ed 100644
69--- a/mm/hugetlb.c
70+++ b/mm/hugetlb.c
71@@ -2686,6 +2686,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72 * so no worry about deadlock.
73 */
74 page = pte_page(entry);
75+ get_page(page);
76 if (page != pagecache_page)
77 lock_page(page);
78
79@@ -2717,6 +2718,7 @@ out_page_table_lock:
80 }
81 if (page != pagecache_page)
82 unlock_page(page);
83+ put_page(page);
84
85 out_mutex:
86 mutex_unlock(&hugetlb_instantiation_mutex);
87--
881.7.9.5
89
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch
new file mode 100644
index 00000000..0bd53054
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch
@@ -0,0 +1,107 @@
1From 67d0ef228b571d53087923471cdd9de8281b7545 Mon Sep 17 00:00:00 2001
2From: Marek Belisko <marek.belisko@open-nandra.com>
3Date: Thu, 12 Apr 2012 21:48:03 +0200
4Subject: [PATCH 17/69] staging: iio: hmc5843: Fix crash in probe function.
5
6commit 62d2feb9803f18c4e3c8a1a2c7e30a54df8a1d72 upstream.
7
8Fix crash after issuing:
9 echo hmc5843 0x1e > /sys/class/i2c-dev/i2c-2/device/new_device
10
11 [ 37.180999] device: '2-001e': device_add
12 [ 37.188293] bus: 'i2c': add device 2-001e
13 [ 37.194549] PM: Adding info for i2c:2-001e
14 [ 37.200958] bus: 'i2c': driver_probe_device: matched device 2-001e with driver hmc5843
15 [ 37.210815] bus: 'i2c': really_probe: probing driver hmc5843 with device 2-001e
16 [ 37.224884] HMC5843 initialized
17 [ 37.228759] ------------[ cut here ]------------
18 [ 37.233612] kernel BUG at mm/slab.c:505!
19 [ 37.237701] Internal error: Oops - BUG: 0 [#1] PREEMPT
20 [ 37.243103] Modules linked in:
21 [ 37.246337] CPU: 0 Not tainted (3.3.1-gta04+ #28)
22 [ 37.251647] PC is at kfree+0x84/0x144
23 [ 37.255493] LR is at kfree+0x20/0x144
24 [ 37.259338] pc : [<c00b408c>] lr : [<c00b4028>] psr: 40000093
25 [ 37.259368] sp : de249cd8 ip : 0000000c fp : 00000090
26 [ 37.271362] r10: 0000000a r9 : de229eac r8 : c0236274
27 [ 37.276855] r7 : c09d6490 r6 : a0000013 r5 : de229c00 r4 : de229c10
28 [ 37.283691] r3 : c0f00218 r2 : 00000400 r1 : c0eea000 r0 : c00b4028
29 [ 37.290527] Flags: nZcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
30 [ 37.298095] Control: 10c5387d Table: 9e1d0019 DAC: 00000015
31 [ 37.304107] Process sh (pid: 91, stack limit = 0xde2482f0)
32 [ 37.309844] Stack: (0xde249cd8 to 0xde24a000)
33 [ 37.314422] 9cc0: de229c10 de229c00
34 [ 37.322998] 9ce0: de229c10 ffffffea 00000005 c0236274 de140a80 c00b4798 dec00080 de140a80
35 [ 37.331573] 9d00: c032f37c dec00080 000080d0 00000001 de229c00 de229c10 c048d578 00000005
36 [ 37.340148] 9d20: de229eac 0000000a 00000090 c032fa40 00000001 00000000 00000001 de229c10
37 [ 37.348724] 9d40: de229eac 00000029 c075b558 00000001 00000003 00000004 de229c10 c048d594
38 [ 37.357299] 9d60: 00000000 60000013 00000018 205b0007 37332020 3432322e 5d343838 c0060020
39 [ 37.365905] 9d80: de251600 00000001 00000000 de251600 00000001 c0065a84 de229c00 de229c48
40 [ 37.374481] 9da0: 00000006 0048d62c de229c38 de229c00 de229c00 de1f6c00 de1f6c20 00000001
41 [ 37.383056] 9dc0: 00000000 c048d62c 00000000 de229c00 de229c00 de1f6c00 de1f6c20 00000001
42 [ 37.391632] 9de0: 00000000 c048d62c 00000000 c0330164 00000000 de1f6c20 c048d62c de1f6c00
43 [ 37.400207] 9e00: c0330078 de1f6c04 c078d714 de189b58 00000000 c02ccfd8 de1f6c20 c0795f40
44 [ 37.408782] 9e20: c0238330 00000000 00000000 c02381a8 de1b9fc0 de1f6c20 de1f6c20 de249e48
45 [ 37.417358] 9e40: c0238330 c0236bb0 decdbed8 de7d0f14 de1f6c20 de1f6c20 de1f6c54 de1f6c20
46 [ 37.425933] 9e60: 00000000 c0238030 de1f6c20 c078d7bc de1f6c20 c02377ec de1f6c20 de1f6c28
47 [ 37.434509] 9e80: dee64cb0 c0236138 c047c554 de189b58 00000000 c004b45c de1f6c20 de1f6cd8
48 [ 37.443084] 9ea0: c0edfa6c de1f6c00 dee64c68 de1f6c04 de1f6c20 dee64cb8 c047c554 de189b58
49 [ 37.451690] 9ec0: 00000000 c02cd634 dee64c68 de249ef4 de23b008 dee64cb0 0000000d de23b000
50 [ 37.460266] 9ee0: de23b007 c02cd78c 00000002 00000000 00000000 35636d68 00333438 00000000
51 [ 37.468841] 9f00: 00000000 00000000 001e0000 00000000 00000000 00000000 00000000 0a10cec0
52 [ 37.477416] 9f20: 00000002 de249f80 0000000d dee62990 de189b40 c0234d88 0000000d c010c354
53 [ 37.485992] 9f40: 0000000d de210f28 000acc88 de249f80 0000000d de248000 00000000 c00b7bf8
54 [ 37.494567] 9f60: de210f28 000acc88 de210f28 000acc88 00000000 00000000 0000000d c00b7ed8
55 [ 37.503143] 9f80: 00000000 00000000 0000000d 00000000 0007fa28 0000000d 000acc88 00000004
56 [ 37.511718] 9fa0: c000e544 c000e380 0007fa28 0000000d 00000001 000acc88 0000000d 00000000
57 [ 37.520294] 9fc0: 0007fa28 0000000d 000acc88 00000004 00000001 00000020 00000002 00000000
58 [ 37.528869] 9fe0: 00000000 beab8624 0000ea05 b6eaebac 600d0010 00000001 00000000 00000000
59 [ 37.537475] [<c00b408c>] (kfree+0x84/0x144) from [<c0236274>] (device_add+0x530/0x57c)
60 [ 37.545806] [<c0236274>] (device_add+0x530/0x57c) from [<c032fa40>] (iio_device_register+0x8c8/0x990)
61 [ 37.555480] [<c032fa40>] (iio_device_register+0x8c8/0x990) from [<c0330164>] (hmc5843_probe+0xec/0x114)
62 [ 37.565338] [<c0330164>] (hmc5843_probe+0xec/0x114) from [<c02ccfd8>] (i2c_device_probe+0xc4/0xf8)
63 [ 37.574737] [<c02ccfd8>] (i2c_device_probe+0xc4/0xf8) from [<c02381a8>] (driver_probe_device+0x118/0x218)
64 [ 37.584777] [<c02381a8>] (driver_probe_device+0x118/0x218) from [<c0236bb0>] (bus_for_each_drv+0x4c/0x84)
65 [ 37.594818] [<c0236bb0>] (bus_for_each_drv+0x4c/0x84) from [<c0238030>] (device_attach+0x78/0xa4)
66 [ 37.604125] [<c0238030>] (device_attach+0x78/0xa4) from [<c02377ec>] (bus_probe_device+0x28/0x9c)
67 [ 37.613433] [<c02377ec>] (bus_probe_device+0x28/0x9c) from [<c0236138>] (device_add+0x3f4/0x57c)
68 [ 37.622650] [<c0236138>] (device_add+0x3f4/0x57c) from [<c02cd634>] (i2c_new_device+0xf8/0x19c)
69 [ 37.631805] [<c02cd634>] (i2c_new_device+0xf8/0x19c) from [<c02cd78c>] (i2c_sysfs_new_device+0xb4/0x130)
70 [ 37.641754] [<c02cd78c>] (i2c_sysfs_new_device+0xb4/0x130) from [<c0234d88>] (dev_attr_store+0x18/0x24)
71 [ 37.651611] [<c0234d88>] (dev_attr_store+0x18/0x24) from [<c010c354>] (sysfs_write_file+0x10c/0x140)
72 [ 37.661193] [<c010c354>] (sysfs_write_file+0x10c/0x140) from [<c00b7bf8>] (vfs_write+0xb0/0x178)
73 [ 37.670410] [<c00b7bf8>] (vfs_write+0xb0/0x178) from [<c00b7ed8>] (sys_write+0x3c/0x68)
74 [ 37.678833] [<c00b7ed8>] (sys_write+0x3c/0x68) from [<c000e380>] (ret_fast_syscall+0x0/0x3c)
75 [ 37.687683] Code: 1593301c e5932000 e3120080 1a000000 (e7f001f2)
76 [ 37.700775] ---[ end trace aaf805debdb69390 ]---
77
78Client data was assigned to iio_dev structure in probe but in
79hmc5843_init_client function casted to private driver data structure which
80is wrong. Possibly calling mutex_init(&data->lock); corrupt data
81which the lead to above crash.
82
83Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
84Acked-by: Jonathan Cameron <jic23@kernel.org>
85Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
86---
87 drivers/staging/iio/magnetometer/hmc5843.c | 4 +++-
88 1 file changed, 3 insertions(+), 1 deletion(-)
89
90diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c
91index fc9ee97..870db4f 100644
92--- a/drivers/staging/iio/magnetometer/hmc5843.c
93+++ b/drivers/staging/iio/magnetometer/hmc5843.c
94@@ -521,7 +521,9 @@ static int hmc5843_detect(struct i2c_client *client,
95 /* Called when we have found a new HMC5843. */
96 static void hmc5843_init_client(struct i2c_client *client)
97 {
98- struct hmc5843_data *data = i2c_get_clientdata(client);
99+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
100+ struct hmc5843_data *data = iio_priv(indio_dev);
101+
102 hmc5843_set_meas_conf(client, data->meas_conf);
103 hmc5843_set_rate(client, data->rate);
104 hmc5843_configure(client, data->operating_mode);
105--
1061.7.9.5
107
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch
new file mode 100644
index 00000000..e24a472b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch
@@ -0,0 +1,42 @@
1From da80dc7cc4c7ed0823fe75f54cefabc42ac56996 Mon Sep 17 00:00:00 2001
2From: Yuriy Kozlov <ykozlov@ptcusa.com>
3Date: Thu, 29 Mar 2012 09:55:27 +0200
4Subject: [PATCH 18/69] tty: serial: altera_uart: Check for NULL platform_data
5 in probe.
6
7commit acede70d6561f2d042d9dbb153d9a3469479c0ed upstream.
8
9Follow altera_jtag_uart. This fixes a crash if there is a mistake in the DTS.
10
11Signed-off-by: Yuriy Kozlov <ykozlov@ptcusa.com>
12Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/tty/serial/altera_uart.c | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c
19index 1d04c50..5ba0898 100644
20--- a/drivers/tty/serial/altera_uart.c
21+++ b/drivers/tty/serial/altera_uart.c
22@@ -555,7 +555,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
23 res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
24 if (res_mem)
25 port->mapbase = res_mem->start;
26- else if (platp->mapbase)
27+ else if (platp)
28 port->mapbase = platp->mapbase;
29 else
30 return -EINVAL;
31@@ -563,7 +563,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
32 res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
33 if (res_irq)
34 port->irq = res_irq->start;
35- else if (platp->irq)
36+ else if (platp)
37 port->irq = platp->irq;
38
39 /* Check platform data first so we can override device node data */
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch
new file mode 100644
index 00000000..d81ec8e2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch
@@ -0,0 +1,63 @@
1From d219e7abf51d7e4784a127d79d5806b9c49c672b Mon Sep 17 00:00:00 2001
2From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
3Date: Fri, 13 Apr 2012 03:35:13 +0000
4Subject: [PATCH 19/69] sparc64: Eliminate obsolete __handle_softirq()
5 function
6
7commit 3d3eeb2ef26112a200785e5fca58ec58dd33bf1e upstream.
8
9The invocation of softirq is now handled by irq_exit(), so there is no
10need for sparc64 to invoke it on the trap-return path. In fact, doing so
11is a bug because if the trap occurred in the idle loop, this invocation
12can result in lockdep-RCU failures. The problem is that RCU ignores idle
13CPUs, and the sparc64 trap-return path to the softirq handlers fails to
14tell RCU that the CPU must be considered non-idle while those handlers
15are executing. This means that RCU is ignoring any RCU read-side critical
16sections in those handlers, which in turn means that RCU-protected data
17can be yanked out from under those read-side critical sections.
18
19The shiny new lockdep-RCU ability to detect RCU read-side critical sections
20that RCU is ignoring located this problem.
21
22The fix is straightforward: Make sparc64 stop manually invoking the
23softirq handlers.
24
25Reported-by: Meelis Roos <mroos@linux.ee>
26Suggested-by: David Miller <davem@davemloft.net>
27Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
28Tested-by: Meelis Roos <mroos@linux.ee>
29Signed-off-by: David S. Miller <davem@davemloft.net>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 arch/sparc/kernel/rtrap_64.S | 7 -------
33 1 file changed, 7 deletions(-)
34
35diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
36index 77f1b95..9171fc2 100644
37--- a/arch/sparc/kernel/rtrap_64.S
38+++ b/arch/sparc/kernel/rtrap_64.S
39@@ -20,11 +20,6 @@
40
41 .text
42 .align 32
43-__handle_softirq:
44- call do_softirq
45- nop
46- ba,a,pt %xcc, __handle_softirq_continue
47- nop
48 __handle_preemption:
49 call schedule
50 wrpr %g0, RTRAP_PSTATE, %pstate
51@@ -89,9 +84,7 @@ rtrap:
52 cmp %l1, 0
53
54 /* mm/ultra.S:xcall_report_regs KNOWS about this load. */
55- bne,pn %icc, __handle_softirq
56 ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
57-__handle_softirq_continue:
58 rtrap_xcall:
59 sethi %hi(0xf << 20), %l4
60 and %l1, %l4, %l4
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch
new file mode 100644
index 00000000..9aa5993e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch
@@ -0,0 +1,33 @@
1From 19e418644c8801bf98b7c058825bd632f2a92f1f Mon Sep 17 00:00:00 2001
2From: "David S. Miller" <davem@davemloft.net>
3Date: Fri, 13 Apr 2012 11:56:22 -0700
4Subject: [PATCH 20/69] sparc64: Fix bootup crash on sun4v.
5
6commit 9e0daff30fd7ecf698e5d20b0fa7f851e427cca5 upstream.
7
8The DS driver registers as a subsys_initcall() but this can be too
9early, in particular this risks registering before we've had a chance
10to allocate and setup module_kset in kernel/params.c which is
11performed also as a subsyts_initcall().
12
13Register DS using device_initcall() insteal.
14
15Signed-off-by: David S. Miller <davem@davemloft.net>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 arch/sparc/kernel/ds.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c
22index 381edcd..27728e1 100644
23--- a/arch/sparc/kernel/ds.c
24+++ b/arch/sparc/kernel/ds.c
25@@ -1267,4 +1267,4 @@ static int __init ds_init(void)
26 return vio_register_driver(&ds_driver);
27 }
28
29-subsys_initcall(ds_init);
30+fs_initcall(ds_init);
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch
new file mode 100644
index 00000000..3291bc53
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch
@@ -0,0 +1,35 @@
1From c8b1bb9d2383126d121f36795771ca734bc73003 Mon Sep 17 00:00:00 2001
2From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
3Date: Thu, 22 Mar 2012 21:40:08 +0100
4Subject: [PATCH 21/69] cciss: Initialize scsi host max_sectors for tape drive
5 support
6
7commit 395d287526bb60411ff37b19ad9dd38b58ba8732 upstream.
8
9The default is too small (1024 blocks), use h->cciss_max_sectors (8192 blocks)
10Without this change, if you try to set the block size of a tape drive above
11512*1024, via "mt -f /dev/st0 setblk nnn" where nnn is greater than 524288,
12it won't work right.
13
14Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
15Signed-off-by: Jens Axboe <axboe@kernel.dk>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/block/cciss_scsi.c | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
22index e820b68..f510a9c 100644
23--- a/drivers/block/cciss_scsi.c
24+++ b/drivers/block/cciss_scsi.c
25@@ -866,6 +866,7 @@ cciss_scsi_detect(ctlr_info_t *h)
26 sh->can_queue = cciss_tape_cmds;
27 sh->sg_tablesize = h->maxsgentries;
28 sh->max_cmd_len = MAX_COMMAND_SIZE;
29+ sh->max_sectors = h->cciss_max_sectors;
30
31 ((struct cciss_scsi_adapter_data_t *)
32 h->scsi_ctlr)->scsi_host = sh;
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch
new file mode 100644
index 00000000..df9a8fea
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch
@@ -0,0 +1,38 @@
1From 80461d138d8963f19b97fda7126455f12ba70bc8 Mon Sep 17 00:00:00 2001
2From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
3Date: Thu, 22 Mar 2012 21:40:09 +0100
4Subject: [PATCH 22/69] cciss: Fix scsi tape io with more than 255 scatter
5 gather elements
6
7commit bc67f63650fad6b3478d9ddfd5406d45a95987c9 upstream.
8
9The total number of scatter gather elements in the CISS command
10used by the scsi tape code was being cast to a u8, which can hold
11at most 255 scatter gather elements. It should have been cast to
12a u16. Without this patch the command gets rejected by the controller
13since the total scatter gather count did not add up to the right
14value resulting in an i/o error.
15
16Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
17Signed-off-by: Jens Axboe <axboe@kernel.dk>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/block/cciss_scsi.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
24index f510a9c..acda773 100644
25--- a/drivers/block/cciss_scsi.c
26+++ b/drivers/block/cciss_scsi.c
27@@ -1411,7 +1411,7 @@ static void cciss_scatter_gather(ctlr_info_t *h, CommandList_struct *c,
28 /* track how many SG entries we are using */
29 if (request_nsgs > h->maxSG)
30 h->maxSG = request_nsgs;
31- c->Header.SGTotal = (__u8) request_nsgs + chained;
32+ c->Header.SGTotal = (u16) request_nsgs + chained;
33 if (request_nsgs > h->max_cmd_sgentries)
34 c->Header.SGList = h->max_cmd_sgentries;
35 else
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-perf-hists-Catch-and-handle-out-of-date-hist-entry-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-perf-hists-Catch-and-handle-out-of-date-hist-entry-m.patch
new file mode 100644
index 00000000..42495dd2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0023-perf-hists-Catch-and-handle-out-of-date-hist-entry-m.patch
@@ -0,0 +1,59 @@
1From 49bb9ef1ae7951ed1a193e4473cb617d7a89fbdb Mon Sep 17 00:00:00 2001
2From: David Miller <davem@davemloft.net>
3Date: Tue, 27 Mar 2012 03:14:18 -0400
4Subject: [PATCH 23/69] perf hists: Catch and handle out-of-date hist entry
5 maps.
6
7commit 63fa471dd49e9c9ce029d910d1024330d9b1b145 upstream.
8
9When a process exec()'s, all the maps are retired, but we keep the hist
10entries around which hold references to those outdated maps.
11
12If the same library gets mapped in for which we have hist entries, a new
13map will be created. But when we take a perf entry hit within that map,
14we'll find the existing hist entry with the older map.
15
16This causes symbol translations to be done incorrectly. For example,
17the perf entry processing will lookup the correct uptodate map entry and
18use that to calculate the symbol and DSO relative address. But later
19when we update the histogram we'll translate the address using the
20outdated map file instead leading to conditions such as out-of-range
21offsets in symbol__inc_addr_samples().
22
23Therefore, update the map of the hist_entry dynamically at lookup/
24creation time.
25
26Signed-off-by: David S. Miller <davem@davemloft.net>
27Link: http://lkml.kernel.org/r/20120327.031418.1220315351537060808.davem@davemloft.net
28Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
29Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
30---
31 tools/perf/util/hist.c | 12 ++++++++++++
32 1 file changed, 12 insertions(+)
33
34diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
35index 216e33a..adb372d 100644
36--- a/tools/perf/util/hist.c
37+++ b/tools/perf/util/hist.c
38@@ -230,6 +230,18 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
39 if (!cmp) {
40 he->period += period;
41 ++he->nr_events;
42+
43+ /* If the map of an existing hist_entry has
44+ * become out-of-date due to an exec() or
45+ * similar, update it. Otherwise we will
46+ * mis-adjust symbol addresses when computing
47+ * the history counter to increment.
48+ */
49+ if (he->ms.map != entry->ms.map) {
50+ he->ms.map = entry->ms.map;
51+ if (he->ms.map)
52+ he->ms.map->referenced = true;
53+ }
54 goto out;
55 }
56
57--
581.7.9.5
59
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch
new file mode 100644
index 00000000..bfe3ac54
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0024-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch
@@ -0,0 +1,118 @@
1From c89ee4a69b7ed875adac55c2929903acc5001d3b Mon Sep 17 00:00:00 2001
2From: Wang YanQing <udknight@gmail.com>
3Date: Sun, 1 Apr 2012 08:54:02 +0800
4Subject: [PATCH 24/69] video:uvesafb: Fix oops that uvesafb try to execute
5 NX-protected page
6
7commit b78f29ca0516266431688c5eb42d39ce42ec039a upstream.
8
9This patch fix the oops below that catched in my machine
10
11[ 81.560602] uvesafb: NVIDIA Corporation, GT216 Board - 0696a290, Chip Rev , OEM: NVIDIA, VBE v3.0
12[ 81.609384] uvesafb: protected mode interface info at c000:d350
13[ 81.609388] uvesafb: pmi: set display start = c00cd3b3, set palette = c00cd40e
14[ 81.609390] uvesafb: pmi: ports = 3b4 3b5 3ba 3c0 3c1 3c4 3c5 3c6 3c7 3c8 3c9 3cc 3ce 3cf 3d0 3d1 3d2 3d3 3d4 3d5 3da
15[ 81.614558] uvesafb: VBIOS/hardware doesn't support DDC transfers
16[ 81.614562] uvesafb: no monitor limits have been set, default refresh rate will be used
17[ 81.614994] uvesafb: scrolling: ypan using protected mode interface, yres_virtual=4915
18[ 81.744147] kernel tried to execute NX-protected page - exploit attempt? (uid: 0)
19[ 81.744153] BUG: unable to handle kernel paging request at c00cd3b3
20[ 81.744159] IP: [<c00cd3b3>] 0xc00cd3b2
21[ 81.744167] *pdpt = 00000000016d6001 *pde = 0000000001c7b067 *pte = 80000000000cd163
22[ 81.744171] Oops: 0011 [#1] SMP
23[ 81.744174] Modules linked in: uvesafb(+) cfbcopyarea cfbimgblt cfbfillrect
24[ 81.744178]
25[ 81.744181] Pid: 3497, comm: modprobe Not tainted 3.3.0-rc4NX+ #71 Acer Aspire 4741 /Aspire 4741
26[ 81.744185] EIP: 0060:[<c00cd3b3>] EFLAGS: 00010246 CPU: 0
27[ 81.744187] EIP is at 0xc00cd3b3
28[ 81.744189] EAX: 00004f07 EBX: 00000000 ECX: 00000000 EDX: 00000000
29[ 81.744191] ESI: f763f000 EDI: f763f6e8 EBP: f57f3a0c ESP: f57f3a00
30[ 81.744192] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
31[ 81.744195] Process modprobe (pid: 3497, ti=f57f2000 task=f748c600 task.ti=f57f2000)
32[ 81.744196] Stack:
33[ 81.744197] f82512c5 f759341c 00000000 f57f3a30 c124a9bc 00000001 00000001 000001e0
34[ 81.744202] f8251280 f763f000 f7593400 00000000 f57f3a40 c12598dd f5c0c000 00000000
35[ 81.744206] f57f3b10 c1255efe c125a21a 00000006 f763f09c 00000000 c1c6cb60 f7593400
36[ 81.744210] Call Trace:
37[ 81.744215] [<f82512c5>] ? uvesafb_pan_display+0x45/0x60 [uvesafb]
38[ 81.744222] [<c124a9bc>] fb_pan_display+0x10c/0x160
39[ 81.744226] [<f8251280>] ? uvesafb_vbe_find_mode+0x180/0x180 [uvesafb]
40[ 81.744230] [<c12598dd>] bit_update_start+0x1d/0x50
41[ 81.744232] [<c1255efe>] fbcon_switch+0x39e/0x550
42[ 81.744235] [<c125a21a>] ? bit_cursor+0x4ea/0x560
43[ 81.744240] [<c129b6cb>] redraw_screen+0x12b/0x220
44[ 81.744245] [<c128843b>] ? tty_do_resize+0x3b/0xc0
45[ 81.744247] [<c129ef42>] vc_do_resize+0x3d2/0x3e0
46[ 81.744250] [<c129efb4>] vc_resize+0x14/0x20
47[ 81.744253] [<c12586bd>] fbcon_init+0x29d/0x500
48[ 81.744255] [<c12984c4>] ? set_inverse_trans_unicode+0xe4/0x110
49[ 81.744258] [<c129b378>] visual_init+0xb8/0x150
50[ 81.744261] [<c129c16c>] bind_con_driver+0x16c/0x360
51[ 81.744264] [<c129b47e>] ? register_con_driver+0x6e/0x190
52[ 81.744267] [<c129c3a1>] take_over_console+0x41/0x50
53[ 81.744269] [<c1257b7a>] fbcon_takeover+0x6a/0xd0
54[ 81.744272] [<c12594b8>] fbcon_event_notify+0x758/0x790
55[ 81.744277] [<c10929e2>] notifier_call_chain+0x42/0xb0
56[ 81.744280] [<c1092d30>] __blocking_notifier_call_chain+0x60/0x90
57[ 81.744283] [<c1092d7a>] blocking_notifier_call_chain+0x1a/0x20
58[ 81.744285] [<c124a5a1>] fb_notifier_call_chain+0x11/0x20
59[ 81.744288] [<c124b759>] register_framebuffer+0x1d9/0x2b0
60[ 81.744293] [<c1061c73>] ? ioremap_wc+0x33/0x40
61[ 81.744298] [<f82537c6>] uvesafb_probe+0xaba/0xc40 [uvesafb]
62[ 81.744302] [<c12bb81f>] platform_drv_probe+0xf/0x20
63[ 81.744306] [<c12ba558>] driver_probe_device+0x68/0x170
64[ 81.744309] [<c12ba731>] __device_attach+0x41/0x50
65[ 81.744313] [<c12b9088>] bus_for_each_drv+0x48/0x70
66[ 81.744316] [<c12ba7f3>] device_attach+0x83/0xa0
67[ 81.744319] [<c12ba6f0>] ? __driver_attach+0x90/0x90
68[ 81.744321] [<c12b991f>] bus_probe_device+0x6f/0x90
69[ 81.744324] [<c12b8a45>] device_add+0x5e5/0x680
70[ 81.744329] [<c122a1a3>] ? kvasprintf+0x43/0x60
71[ 81.744332] [<c121e6e4>] ? kobject_set_name_vargs+0x64/0x70
72[ 81.744335] [<c121e6e4>] ? kobject_set_name_vargs+0x64/0x70
73[ 81.744339] [<c12bbe9f>] platform_device_add+0xff/0x1b0
74[ 81.744343] [<f8252906>] uvesafb_init+0x50/0x9b [uvesafb]
75[ 81.744346] [<c100111f>] do_one_initcall+0x2f/0x170
76[ 81.744350] [<f82528b6>] ? uvesafb_is_valid_mode+0x66/0x66 [uvesafb]
77[ 81.744355] [<c10c6994>] sys_init_module+0xf4/0x1410
78[ 81.744359] [<c1157fc0>] ? vfsmount_lock_local_unlock_cpu+0x30/0x30
79[ 81.744363] [<c144cb10>] sysenter_do_call+0x12/0x36
80[ 81.744365] Code: f5 00 00 00 32 f6 66 8b da 66 d1 e3 66 ba d4 03 8a e3 b0 1c 66 ef b0 1e 66 ef 8a e7 b0 1d 66 ef b0 1f 66 ef e8 fa 00 00 00 61 c3 <60> e8 c8 00 00 00 66 8b f3 66 8b da 66 ba d4 03 b0 0c 8a e5 66
81[ 81.744388] EIP: [<c00cd3b3>] 0xc00cd3b3 SS:ESP 0068:f57f3a00
82[ 81.744391] CR2: 00000000c00cd3b3
83[ 81.744393] ---[ end trace 18b2c87c925b54d6 ]---
84
85Signed-off-by: Wang YanQing <udknight@gmail.com>
86Cc: Michal Januszewski <spock@gentoo.org>
87Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
88Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
89Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
90---
91 drivers/video/uvesafb.c | 11 +++++++++--
92 1 file changed, 9 insertions(+), 2 deletions(-)
93
94diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
95index 7f8472c..8813588 100644
96--- a/drivers/video/uvesafb.c
97+++ b/drivers/video/uvesafb.c
98@@ -815,8 +815,15 @@ static int __devinit uvesafb_vbe_init(struct fb_info *info)
99 par->pmi_setpal = pmi_setpal;
100 par->ypan = ypan;
101
102- if (par->pmi_setpal || par->ypan)
103- uvesafb_vbe_getpmi(task, par);
104+ if (par->pmi_setpal || par->ypan) {
105+ if (__supported_pte_mask & _PAGE_NX) {
106+ par->pmi_setpal = par->ypan = 0;
107+ printk(KERN_WARNING "uvesafb: NX protection is actively."
108+ "We have better not to use the PMI.\n");
109+ } else {
110+ uvesafb_vbe_getpmi(task, par);
111+ }
112+ }
113 #else
114 /* The protected mode interface is not available on non-x86. */
115 par->pmi_setpal = par->ypan = 0;
116--
1171.7.9.5
118
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch
new file mode 100644
index 00000000..1d5dcca6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0025-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch
@@ -0,0 +1,53 @@
1From dd19a09c7530975d86328c8eaf082626dd1d4fe1 Mon Sep 17 00:00:00 2001
2From: Neal Cardwell <ncardwell@google.com>
3Date: Tue, 27 Mar 2012 15:09:37 -0400
4Subject: [PATCH 25/69] nohz: Fix stale jiffies update in tick_nohz_restart()
5
6commit 6f103929f8979d2638e58d7f7fda0beefcb8ee7e upstream.
7
8Fix tick_nohz_restart() to not use a stale ktime_t "now" value when
9calling tick_do_update_jiffies64(now).
10
11If we reach this point in the loop it means that we crossed a tick
12boundary since we grabbed the "now" timestamp, so at this point "now"
13refers to a time in the old jiffy, so using the old value for "now" is
14incorrect, and is likely to give us a stale jiffies value.
15
16In particular, the first time through the loop the
17tick_do_update_jiffies64(now) call is always a no-op, since the
18caller, tick_nohz_restart_sched_tick(), will have already called
19tick_do_update_jiffies64(now) with that "now" value.
20
21Note that tick_nohz_stop_sched_tick() already uses the correct
22approach: when we notice we cross a jiffy boundary, grab a new
23timestamp with ktime_get(), and *then* update jiffies.
24
25Signed-off-by: Neal Cardwell <ncardwell@google.com>
26Cc: Ben Segall <bsegall@google.com>
27Cc: Ingo Molnar <mingo@elte.hu>
28Link: http://lkml.kernel.org/r/1332875377-23014-1-git-send-email-ncardwell@google.com
29Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 kernel/time/tick-sched.c | 4 ++--
33 1 file changed, 2 insertions(+), 2 deletions(-)
34
35diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
36index 4042064..c923640 100644
37--- a/kernel/time/tick-sched.c
38+++ b/kernel/time/tick-sched.c
39@@ -508,9 +508,9 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)
40 hrtimer_get_expires(&ts->sched_timer), 0))
41 break;
42 }
43- /* Update jiffies and reread time */
44- tick_do_update_jiffies64(now);
45+ /* Reread time and update jiffies */
46 now = ktime_get();
47+ tick_do_update_jiffies64(now);
48 }
49 }
50
51--
521.7.9.5
53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-pch_uart-Fix-MSI-setting-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-pch_uart-Fix-MSI-setting-issue.patch
new file mode 100644
index 00000000..3792b6fd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0026-pch_uart-Fix-MSI-setting-issue.patch
@@ -0,0 +1,43 @@
1From 701cb5c2dbbe57b09a0585ea3a983540a29106c6 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Mon, 2 Apr 2012 14:36:22 +0900
4Subject: [PATCH 26/69] pch_uart: Fix MSI setting issue
5
6commit 867c902e07d5677e2a5b54c0435e589513abde48 upstream.
7
8The following patch (MSI setting) is not enough.
9
10commit e463595fd9c752fa4bf06b47df93ef9ade3c7cf0
11Author: Alexander Stein <alexander.stein@systec-electronic.com>
12Date: Mon Jul 4 08:58:31 2011 +0200
13
14 pch_uart: Add MSI support
15
16 Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
17 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
18
19To enable MSI mode, PCI bus-mastering must be enabled.
20This patch enables the setting.
21
22cc: Alexander Stein <alexander.stein@systec-electronic.com>
23Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/tty/serial/pch_uart.c | 1 +
27 1 file changed, 1 insertion(+)
28
29diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
30index d6aba8c..da776a0 100644
31--- a/drivers/tty/serial/pch_uart.c
32+++ b/drivers/tty/serial/pch_uart.c
33@@ -1438,6 +1438,7 @@ static struct eg20t_port *pch_uart_init_port(struct pci_dev *pdev,
34 }
35
36 pci_enable_msi(pdev);
37+ pci_set_master(pdev);
38
39 iobase = pci_resource_start(pdev, 0);
40 mapbase = pci_resource_start(pdev, 1);
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-serial-fix-race-between-probe-and-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-serial-fix-race-between-probe-and-open.patch
new file mode 100644
index 00000000..53ef3987
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0027-USB-serial-fix-race-between-probe-and-open.patch
@@ -0,0 +1,97 @@
1From fe3ac85bc01bebcbfd24255f567c18d0d609661b Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Tue, 20 Mar 2012 16:59:33 +0100
4Subject: [PATCH 27/69] USB: serial: fix race between probe and open
5
6commit a65a6f14dc24a90bde3f5d0073ba2364476200bf upstream.
7
8Fix race between probe and open by making sure that the disconnected
9flag is not cleared until all ports have been registered.
10
11A call to tty_open while probe is running may get a reference to the
12serial structure in serial_install before its ports have been
13registered. This may lead to usb_serial_core calling driver open before
14port is fully initialised.
15
16With ftdi_sio this result in the following NULL-pointer dereference as
17the private data has not been initialised at open:
18
19[ 199.698286] IP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio]
20[ 199.698297] *pde = 00000000
21[ 199.698303] Oops: 0000 [#1] PREEMPT SMP
22[ 199.698313] Modules linked in: ftdi_sio usbserial
23[ 199.698323]
24[ 199.698327] Pid: 1146, comm: ftdi_open Not tainted 3.2.11 #70 Dell Inc. Vostro 1520/0T816J
25[ 199.698339] EIP: 0060:[<f811a089>] EFLAGS: 00010286 CPU: 0
26[ 199.698344] EIP is at ftdi_open+0x59/0xe0 [ftdi_sio]
27[ 199.698348] EAX: 0000003e EBX: f5067000 ECX: 00000000 EDX: 80000600
28[ 199.698352] ESI: f48d8800 EDI: 00000001 EBP: f515dd54 ESP: f515dcfc
29[ 199.698356] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
30[ 199.698361] Process ftdi_open (pid: 1146, ti=f515c000 task=f481e040 task.ti=f515c000)
31[ 199.698364] Stack:
32[ 199.698368] f811a9fe f811a9e0 f811b3ef 00000000 00000000 00001388 00000000 f4a86800
33[ 199.698387] 00000002 00000000 f806e68e 00000000 f532765c f481e040 00000246 22222222
34[ 199.698479] 22222222 22222222 22222222 f5067004 f5327600 f5327638 f515dd74 f806e6ab
35[ 199.698496] Call Trace:
36[ 199.698504] [<f806e68e>] ? serial_activate+0x2e/0x70 [usbserial]
37[ 199.698511] [<f806e6ab>] serial_activate+0x4b/0x70 [usbserial]
38[ 199.698521] [<c126380c>] tty_port_open+0x7c/0xd0
39[ 199.698527] [<f806e660>] ? serial_set_termios+0xa0/0xa0 [usbserial]
40[ 199.698534] [<f806e76f>] serial_open+0x2f/0x70 [usbserial]
41[ 199.698540] [<c125d07c>] tty_open+0x20c/0x510
42[ 199.698546] [<c10e9eb7>] chrdev_open+0xe7/0x230
43[ 199.698553] [<c10e48f2>] __dentry_open+0x1f2/0x390
44[ 199.698559] [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
45[ 199.698565] [<c10e4b76>] nameidata_to_filp+0x66/0x80
46[ 199.698570] [<c10e9dd0>] ? cdev_put+0x20/0x20
47[ 199.698576] [<c10f3e08>] do_last+0x198/0x730
48[ 199.698581] [<c10f4440>] path_openat+0xa0/0x350
49[ 199.698587] [<c10f47d5>] do_filp_open+0x35/0x80
50[ 199.698593] [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
51[ 199.698599] [<c10ff110>] ? alloc_fd+0xc0/0x100
52[ 199.698605] [<c10f0b72>] ? getname_flags+0x72/0x120
53[ 199.698611] [<c10e4450>] do_sys_open+0xf0/0x1c0
54[ 199.698617] [<c11fcc08>] ? trace_hardirqs_on_thunk+0xc/0x10
55[ 199.698623] [<c10e458e>] sys_open+0x2e/0x40
56[ 199.698628] [<c144c990>] sysenter_do_call+0x12/0x36
57[ 199.698632] Code: 85 89 00 00 00 8b 16 8b 4d c0 c1 e2 08 c7 44 24 14 88 13 00 00 81 ca 00 00 00 80 c7 44 24 10 00 00 00 00 c7 44 24 0c 00 00 00 00 <0f> b7 41 78 31 c9 89 44 24 08 c7 44 24 04 00 00 00 00 c7 04 24
58[ 199.698884] EIP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio] SS:ESP 0068:f515dcfc
59[ 199.698893] CR2: 0000000000000078
60[ 199.698925] ---[ end trace 77c43ec023940cff ]---
61
62Reported-and-tested-by: Ken Huang <csuhgw@gmail.com>
63Signed-off-by: Johan Hovold <jhovold@gmail.com>
64Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
65---
66 drivers/usb/serial/usb-serial.c | 8 ++++++++
67 1 file changed, 8 insertions(+)
68
69diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
70index cc274fd..38d7ebd 100644
71--- a/drivers/usb/serial/usb-serial.c
72+++ b/drivers/usb/serial/usb-serial.c
73@@ -1059,6 +1059,12 @@ int usb_serial_probe(struct usb_interface *interface,
74 serial->attached = 1;
75 }
76
77+ /* Avoid race with tty_open and serial_install by setting the
78+ * disconnected flag and not clearing it until all ports have been
79+ * registered.
80+ */
81+ serial->disconnected = 1;
82+
83 if (get_free_serial(serial, num_ports, &minor) == NULL) {
84 dev_err(&interface->dev, "No more free serial devices\n");
85 goto probe_error;
86@@ -1083,6 +1089,8 @@ int usb_serial_probe(struct usb_interface *interface,
87 }
88 }
89
90+ serial->disconnected = 0;
91+
92 usb_serial_console_init(debug, minor);
93
94 exit:
95--
961.7.9.5
97
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch
new file mode 100644
index 00000000..48e31f13
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0028-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch
@@ -0,0 +1,37 @@
1From fa3bc47f28470076336a7f3cfedcf67837224a71 Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Fri, 23 Mar 2012 15:23:18 +0100
4Subject: [PATCH 28/69] USB: pl2303: fix DTR/RTS being raised on baud rate
5 change
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit ce5c9851855bab190c9a142761d54ba583ab094c upstream.
11
12DTR/RTS should only be raised when changing baudrate from B0 and not on
13any baud rate change (> B0).
14
15Reported-by: Søren Holm <sgh@sgh.dk>
16Signed-off-by: Johan Hovold <jhovold@gmail.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/usb/serial/pl2303.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
23index fc2d66f..5532ea5 100644
24--- a/drivers/usb/serial/pl2303.c
25+++ b/drivers/usb/serial/pl2303.c
26@@ -421,7 +421,7 @@ static void pl2303_set_termios(struct tty_struct *tty,
27 control = priv->line_control;
28 if ((cflag & CBAUD) == B0)
29 priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS);
30- else
31+ else if ((old_termios->c_cflag & CBAUD) == B0)
32 priv->line_control |= (CONTROL_DTR | CONTROL_RTS);
33 if (control != priv->line_control) {
34 control = priv->line_control;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch
new file mode 100644
index 00000000..17b3947a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0029-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch
@@ -0,0 +1,32 @@
1From 1b71d0901a340fb7f1acfa39053b5baa7d22b8e5 Mon Sep 17 00:00:00 2001
2From: Santiago Garcia Mantinan <manty@debian.org>
3Date: Mon, 19 Mar 2012 18:17:00 +0100
4Subject: [PATCH 29/69] USB: option: re-add
5 NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id
6 array
7
8commit 9ac2feb22b5b821d81463bef92698ef7682a3145 upstream.
9
10Re-add NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id array
11
12Signed-off-by: Santiago Garcia Mantinan <manty@debian.org>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/usb/serial/option.c | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
19index 54898c9..cbe3451 100644
20--- a/drivers/usb/serial/option.c
21+++ b/drivers/usb/serial/option.c
22@@ -708,6 +708,7 @@ static const struct usb_device_id option_ids[] = {
23 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) },
24 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) },
25 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) },
26+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) },
27 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED3) },
28 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED4) },
29 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED5) },
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch
new file mode 100644
index 00000000..96810680
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0030-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch
@@ -0,0 +1,79 @@
1From f3a53ff9baee1e730f4332eccf3d5feb3245e7a9 Mon Sep 17 00:00:00 2001
2From: Simon Arlott <simon@fire.lp0.eu>
3Date: Mon, 26 Mar 2012 21:19:40 +0100
4Subject: [PATCH 30/69] USB: ftdi_sio: fix status line change handling for
5 TIOCMIWAIT and TIOCGICOUNT
6
7commit fca5430d48d53eaf103498c33fd0d1984b9f448b upstream.
8
9Handling of TIOCMIWAIT was changed by commit 1d749f9afa657f6ee9336b2bc1fcd750a647d157
10 USB: ftdi_sio.c: Use ftdi async_icount structure for TIOCMIWAIT, as in other drivers
11
12FTDI_STATUS_B0_MASK does not indicate the changed modem status lines,
13it indicates the value of the current modem status lines. An xor is
14still required to determine which lines have changed.
15
16The count was only being incremented if the line was high. The only
17reason TIOCMIWAIT still worked was because the status packet is
18repeated every 1ms, so the count was always changing. The wakeup
19itself still ran based on the status lines changing.
20
21This change fixes handling of updates to the modem status lines and
22allows multiple processes to use TIOCMIWAIT concurrently.
23
24Tested with two processes waiting on different status lines being
25toggled independently.
26
27Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
28Cc: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
29Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
30---
31 drivers/usb/serial/ftdi_sio.c | 24 +++++++++++++-----------
32 1 file changed, 13 insertions(+), 11 deletions(-)
33
34diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
35index f2c9ef7..cfc8e59 100644
36--- a/drivers/usb/serial/ftdi_sio.c
37+++ b/drivers/usb/serial/ftdi_sio.c
38@@ -75,7 +75,7 @@ struct ftdi_private {
39 unsigned long last_dtr_rts; /* saved modem control outputs */
40 struct async_icount icount;
41 wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
42- char prev_status, diff_status; /* Used for TIOCMIWAIT */
43+ char prev_status; /* Used for TIOCMIWAIT */
44 char transmit_empty; /* If transmitter is empty or not */
45 struct usb_serial_port *port;
46 __u16 interface; /* FT2232C, FT2232H or FT4232H port interface
47@@ -1979,17 +1979,19 @@ static int ftdi_process_packet(struct tty_struct *tty,
48 N.B. packet may be processed more than once, but differences
49 are only processed once. */
50 status = packet[0] & FTDI_STATUS_B0_MASK;
51- if (status & FTDI_RS0_CTS)
52- priv->icount.cts++;
53- if (status & FTDI_RS0_DSR)
54- priv->icount.dsr++;
55- if (status & FTDI_RS0_RI)
56- priv->icount.rng++;
57- if (status & FTDI_RS0_RLSD)
58- priv->icount.dcd++;
59 if (status != priv->prev_status) {
60- priv->diff_status |= status ^ priv->prev_status;
61- wake_up_interruptible(&priv->delta_msr_wait);
62+ char diff_status = status ^ priv->prev_status;
63+
64+ if (diff_status & FTDI_RS0_CTS)
65+ priv->icount.cts++;
66+ if (diff_status & FTDI_RS0_DSR)
67+ priv->icount.dsr++;
68+ if (diff_status & FTDI_RS0_RI)
69+ priv->icount.rng++;
70+ if (diff_status & FTDI_RS0_RLSD)
71+ priv->icount.dcd++;
72+
73+ wake_up_interruptible_all(&priv->delta_msr_wait);
74 priv->prev_status = status;
75 }
76
77--
781.7.9.5
79
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch
new file mode 100644
index 00000000..189b5980
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0031-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch
@@ -0,0 +1,111 @@
1From 9290ee7d767163efb842c578e20c74164dddb350 Mon Sep 17 00:00:00 2001
2From: Simon Arlott <simon@fire.lp0.eu>
3Date: Mon, 26 Mar 2012 23:27:59 +0100
4Subject: [PATCH 31/69] USB: ftdi_sio: fix race condition in TIOCMIWAIT, and
5 abort of TIOCMIWAIT when the device is removed
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 876ae50d94b02f3f523aa451b45ec5fb9c25d221 upstream.
11
12There are two issues here, one is that the device is generating
13spurious very fast modem status line changes somewhere:
14
15CTS becomes high then low 18µs later:
16[121226.924373] ftdi_process_packet: prev rng=0 dsr=10 dcd=0 cts=6
17[121226.924378] ftdi_process_packet: status=10 prev=00 diff=10
18[121226.924382] ftdi_process_packet: now rng=0 dsr=10 dcd=0 cts=7
19(wake_up_interruptible is called)
20[121226.924391] ftdi_process_packet: prev rng=0 dsr=10 dcd=0 cts=7
21[121226.924394] ftdi_process_packet: status=00 prev=10 diff=10
22[121226.924397] ftdi_process_packet: now rng=0 dsr=10 dcd=0 cts=8
23(wake_up_interruptible is called)
24
25This wakes up the task in TIOCMIWAIT:
26[121226.924405] ftdi_ioctl: 19451 rng=0->0 dsr=10->10 dcd=0->0 cts=6->8
27(wait from 20:51:46 returns and observes both changes)
28
29Which then calls TIOCMIWAIT again:
3020:51:46.400239 ioctl(3, TIOCMIWAIT, 0x20) = 0
3122:11:09.441818 ioctl(3, TIOCMGET, [TIOCM_DTR|TIOCM_RTS]) = 0
3222:11:09.442812 ioctl(3, TIOCMIWAIT, 0x20) = -1 EIO (Input/output error)
33(the second wake_up_interruptible takes effect and an I/O error occurs)
34
35The other issue is that TIOCMIWAIT will wait forever (unless the task is
36interrupted) if the device is removed.
37
38This change removes the -EIO return that occurs if the counts don't
39appear to have changed. Multiple counts may have been processed as
40one or the waiting task may have started waiting after recording the
41current count.
42
43It adds a bool to indicate that the device has been removed so that
44TIOCMIWAIT doesn't wait forever, and wakes up any tasks so that they can
45return -EIO.
46
47Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
48Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
49---
50 drivers/usb/serial/ftdi_sio.c | 12 +++++++-----
51 1 file changed, 7 insertions(+), 5 deletions(-)
52
53diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
54index cfc8e59..c4cf3f3 100644
55--- a/drivers/usb/serial/ftdi_sio.c
56+++ b/drivers/usb/serial/ftdi_sio.c
57@@ -76,6 +76,7 @@ struct ftdi_private {
58 struct async_icount icount;
59 wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
60 char prev_status; /* Used for TIOCMIWAIT */
61+ bool dev_gone; /* Used to abort TIOCMIWAIT */
62 char transmit_empty; /* If transmitter is empty or not */
63 struct usb_serial_port *port;
64 __u16 interface; /* FT2232C, FT2232H or FT4232H port interface
65@@ -1679,6 +1680,7 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port)
66 init_waitqueue_head(&priv->delta_msr_wait);
67
68 priv->flags = ASYNC_LOW_LATENCY;
69+ priv->dev_gone = false;
70
71 if (quirk && quirk->port_probe)
72 quirk->port_probe(priv);
73@@ -1836,6 +1838,9 @@ static int ftdi_sio_port_remove(struct usb_serial_port *port)
74
75 dbg("%s", __func__);
76
77+ priv->dev_gone = true;
78+ wake_up_interruptible_all(&priv->delta_msr_wait);
79+
80 remove_sysfs_attrs(port);
81
82 kref_put(&priv->kref, ftdi_sio_priv_release);
83@@ -2390,15 +2395,12 @@ static int ftdi_ioctl(struct tty_struct *tty,
84 */
85 case TIOCMIWAIT:
86 cprev = priv->icount;
87- while (1) {
88+ while (!priv->dev_gone) {
89 interruptible_sleep_on(&priv->delta_msr_wait);
90 /* see if a signal did it */
91 if (signal_pending(current))
92 return -ERESTARTSYS;
93 cnow = priv->icount;
94- if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr &&
95- cnow.dcd == cprev.dcd && cnow.cts == cprev.cts)
96- return -EIO; /* no change => error */
97 if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) ||
98 ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) ||
99 ((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) ||
100@@ -2407,7 +2409,7 @@ static int ftdi_ioctl(struct tty_struct *tty,
101 }
102 cprev = cnow;
103 }
104- /* not reached */
105+ return -EIO;
106 break;
107 case TIOCSERGETLSR:
108 return get_lsr_info(port, (struct serial_struct __user *)arg);
109--
1101.7.9.5
111
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch
new file mode 100644
index 00000000..b13cff3d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0032-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch
@@ -0,0 +1,30 @@
1From fa17e1b79bef42fa178918e05b7a38d69caa13d7 Mon Sep 17 00:00:00 2001
2From: Anton Samokhvalov <pg83@yandex.ru>
3Date: Wed, 4 Apr 2012 22:26:01 +0400
4Subject: [PATCH 32/69] USB: sierra: add support for Sierra Wireless MC7710
5
6commit c5d703dcc776cb542b41665f2b7e2ba054efb4a7 upstream.
7
8Just add new device id. 3G works fine, LTE not tested.
9
10Signed-off-by: Anton Samokhvalov <pg83@yandex.ru>
11Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12---
13 drivers/usb/serial/sierra.c | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
17index b18179b..7c3ec9e 100644
18--- a/drivers/usb/serial/sierra.c
19+++ b/drivers/usb/serial/sierra.c
20@@ -289,6 +289,7 @@ static const struct usb_device_id id_table[] = {
21 { USB_DEVICE(0x1199, 0x6856) }, /* Sierra Wireless AirCard 881 U */
22 { USB_DEVICE(0x1199, 0x6859) }, /* Sierra Wireless AirCard 885 E */
23 { USB_DEVICE(0x1199, 0x685A) }, /* Sierra Wireless AirCard 885 E */
24+ { USB_DEVICE(0x1199, 0x68A2) }, /* Sierra Wireless MC7710 */
25 /* Sierra Wireless C885 */
26 { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6880, 0xFF, 0xFF, 0xFF)},
27 /* Sierra Wireless C888, Air Card 501, USB 303, USB 304 */
28--
291.7.9.5
30
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch
new file mode 100644
index 00000000..9ff10f9a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0033-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch
@@ -0,0 +1,85 @@
1From cd107339d3370b39dcaafd354a0c658b207dcaf0 Mon Sep 17 00:00:00 2001
2From: Alan Stern <stern@rowland.harvard.edu>
3Date: Thu, 22 Mar 2012 11:00:21 -0400
4Subject: [PATCH 33/69] USB: don't clear urb->dev in scatter-gather library
5
6commit bcf398537630bf20b4dbe59ba855b69f404c93cf upstream.
7
8This patch (as1517b) fixes an error in the USB scatter-gather library.
9The library code uses urb->dev to determine whether or nor an URB is
10currently active; the completion handler sets urb->dev to NULL.
11However the core unlinking routines need to use urb->dev. Since
12unlinking always racing with completion, the completion handler must
13not clear urb->dev -- it can lead to invalid memory accesses when a
14transfer has to be cancelled.
15
16This patch fixes the problem by getting rid of the lines that clear
17urb->dev after urb has been submitted. As a result we may end up
18trying to unlink an URB that failed in submission or that has already
19completed, so an extra check is added after each unlink to avoid
20printing an error message when this happens. The checks are updated
21in both sg_complete() and sg_cancel(), and the second is updated to
22match the first (currently it prints out unnecessary warning messages
23if a device is unplugged while a transfer is in progress).
24
25Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
26Reported-and-tested-by: Illia Zaitsev <I.Zaitsev@adbglobal.com>
27CC: Ming Lei <tom.leiming@gmail.com>
28Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29---
30 drivers/usb/core/message.c | 11 ++++++-----
31 1 file changed, 6 insertions(+), 5 deletions(-)
32
33diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
34index b3bdfed..aed3e07 100644
35--- a/drivers/usb/core/message.c
36+++ b/drivers/usb/core/message.c
37@@ -308,7 +308,8 @@ static void sg_complete(struct urb *urb)
38 retval = usb_unlink_urb(io->urbs [i]);
39 if (retval != -EINPROGRESS &&
40 retval != -ENODEV &&
41- retval != -EBUSY)
42+ retval != -EBUSY &&
43+ retval != -EIDRM)
44 dev_err(&io->dev->dev,
45 "%s, unlink --> %d\n",
46 __func__, retval);
47@@ -317,7 +318,6 @@ static void sg_complete(struct urb *urb)
48 }
49 spin_lock(&io->lock);
50 }
51- urb->dev = NULL;
52
53 /* on the last completion, signal usb_sg_wait() */
54 io->bytes += urb->actual_length;
55@@ -524,7 +524,6 @@ void usb_sg_wait(struct usb_sg_request *io)
56 case -ENXIO: /* hc didn't queue this one */
57 case -EAGAIN:
58 case -ENOMEM:
59- io->urbs[i]->dev = NULL;
60 retval = 0;
61 yield();
62 break;
63@@ -542,7 +541,6 @@ void usb_sg_wait(struct usb_sg_request *io)
64
65 /* fail any uncompleted urbs */
66 default:
67- io->urbs[i]->dev = NULL;
68 io->urbs[i]->status = retval;
69 dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
70 __func__, retval);
71@@ -593,7 +591,10 @@ void usb_sg_cancel(struct usb_sg_request *io)
72 if (!io->urbs [i]->dev)
73 continue;
74 retval = usb_unlink_urb(io->urbs [i]);
75- if (retval != -EINPROGRESS && retval != -EBUSY)
76+ if (retval != -EINPROGRESS
77+ && retval != -ENODEV
78+ && retval != -EBUSY
79+ && retval != -EIDRM)
80 dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
81 __func__, retval);
82 }
83--
841.7.9.5
85
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-USB-don-t-ignore-suspend-errors-for-root-hubs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-USB-don-t-ignore-suspend-errors-for-root-hubs.patch
new file mode 100644
index 00000000..019927df
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0034-USB-don-t-ignore-suspend-errors-for-root-hubs.patch
@@ -0,0 +1,54 @@
1From 2bfec5e16aa5c74b8c5934059f3e32595ef95214 Mon Sep 17 00:00:00 2001
2From: Alan Stern <stern@rowland.harvard.edu>
3Date: Wed, 28 Mar 2012 15:56:17 -0400
4Subject: [PATCH 34/69] USB: don't ignore suspend errors for root hubs
5
6commit cd4376e23a59a2adf3084cb5f4a523e6d5fd4e49 upstream.
7
8This patch (as1532) fixes a mistake in the USB suspend code. When the
9system is going to sleep, we should ignore errors in powering down USB
10devices, because they don't really matter. The devices will go to low
11power anyway when the entire USB bus gets suspended (except for
12SuperSpeed devices; maybe they will need special treatment later).
13
14However we should not ignore errors in suspending root hubs,
15especially if the error indicates that the suspend raced with a wakeup
16request. Doing so might leave the bus powered on while the system was
17supposed to be asleep, or it might cause the suspend of the root hub's
18parent controller device to fail, or it might cause a wakeup request
19to be ignored.
20
21The patch fixes the problem by ignoring errors only when the device in
22question is not a root hub.
23
24Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
25Reported-by: Chen Peter <B29397@freescale.com>
26Tested-by: Chen Peter <peter.chen@freescale.com>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/usb/core/driver.c | 9 +++++++--
30 1 file changed, 7 insertions(+), 2 deletions(-)
31
32diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
33index 45887a0..c77f0d6 100644
34--- a/drivers/usb/core/driver.c
35+++ b/drivers/usb/core/driver.c
36@@ -1198,8 +1198,13 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
37 if (status == 0) {
38 status = usb_suspend_device(udev, msg);
39
40- /* Again, ignore errors during system sleep transitions */
41- if (!PMSG_IS_AUTO(msg))
42+ /*
43+ * Ignore errors from non-root-hub devices during
44+ * system sleep transitions. For the most part,
45+ * these devices should go to low power anyway when
46+ * the entire bus is suspended.
47+ */
48+ if (udev->parent && !PMSG_IS_AUTO(msg))
49 status = 0;
50 }
51
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-don-t-re-enable-IE-constantly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-don-t-re-enable-IE-constantly.patch
new file mode 100644
index 00000000..0643790a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0035-xhci-don-t-re-enable-IE-constantly.patch
@@ -0,0 +1,58 @@
1From 36e9ddc88d64edf5a78006753b3ec306384008d7 Mon Sep 17 00:00:00 2001
2From: Felipe Balbi <balbi@ti.com>
3Date: Thu, 15 Mar 2012 16:37:08 +0200
4Subject: [PATCH 35/69] xhci: don't re-enable IE constantly
5
6commit 4e833c0b87a30798e67f06120cecebef6ee9644c upstream.
7
8While we're at that, define IMAN bitfield to aid readability.
9
10The interrupt enable bit should be set once on driver init, and we
11shouldn't need to continually re-enable it. Commit c21599a3 introduced
12a read of the irq_pending register, and that allows us to preserve the
13state of the IE bit. Before that commit, we were blindly writing 0x3 to
14the register.
15
16This patch should be backported to kernels as old as 2.6.36, or ones
17that contain the commit c21599a36165dbc78b380846b254017a548b9de5 "USB:
18xhci: Reduce reads and writes of interrupter registers".
19
20Signed-off-by: Felipe Balbi <balbi@ti.com>
21Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/usb/host/xhci-ring.c | 2 +-
25 drivers/usb/host/xhci.h | 4 ++++
26 2 files changed, 5 insertions(+), 1 deletion(-)
27
28diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
29index ae92dc4..43b3447 100644
30--- a/drivers/usb/host/xhci-ring.c
31+++ b/drivers/usb/host/xhci-ring.c
32@@ -2343,7 +2343,7 @@ hw_died:
33 u32 irq_pending;
34 /* Acknowledge the PCI interrupt */
35 irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
36- irq_pending |= 0x3;
37+ irq_pending |= IMAN_IP;
38 xhci_writel(xhci, irq_pending, &xhci->ir_set->irq_pending);
39 }
40
41diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
42index 09eda3a..4850c4d 100644
43--- a/drivers/usb/host/xhci.h
44+++ b/drivers/usb/host/xhci.h
45@@ -205,6 +205,10 @@ struct xhci_op_regs {
46 #define CMD_PM_INDEX (1 << 11)
47 /* bits 12:31 are reserved (and should be preserved on writes). */
48
49+/* IMAN - Interrupt Management Register */
50+#define IMAN_IP (1 << 1)
51+#define IMAN_IE (1 << 0)
52+
53 /* USBSTS - USB status - status bitmasks */
54 /* HC not running - set to 1 when run/stop bit is cleared. */
55 #define STS_HALT XHCI_STS_HALT
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch
new file mode 100644
index 00000000..9eb5447c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0036-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch
@@ -0,0 +1,78 @@
1From f8d0987af5d135d8eb54e7b525e985328f0e8bd5 Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Fri, 16 Mar 2012 13:09:39 -0700
4Subject: [PATCH 36/69] xhci: Don't write zeroed pointers to xHC registers.
5
6commit 159e1fcc9a60fc7daba23ee8fcdb99799de3fe84 upstream.
7
8When xhci_mem_cleanup() is called, we can't be sure if the xHC is
9actually halted. We can ask the xHC to halt by writing to the RUN bit
10in the command register, but that might timeout due to a HW hang.
11
12If the host controller is still running, we should not write zeroed
13values to the event ring dequeue pointers or base tables, the DCBAA
14pointers, or the command ring pointers. Eric Fu reports his VIA VL800
15host accesses the event ring pointers after a failed register restore on
16resume from suspend. The hypothesis is that the host never actually
17halted before the register write to change the event ring pointer to
18zero.
19
20Remove all writes of zeroed values to pointer registers in
21xhci_mem_cleanup(). Instead, make all callers of the function reset the
22host controller first, which will reset those registers to zero.
23xhci_mem_init() is the only caller that doesn't first halt and reset the
24host controller before calling xhci_mem_cleanup().
25
26This should be backported to kernels as old as 2.6.32.
27
28Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
29Tested-by: Elric Fu <elricfu1@gmail.com>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 drivers/usb/host/xhci-mem.c | 9 ++-------
33 1 file changed, 2 insertions(+), 7 deletions(-)
34
35diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
36index c69cf54..01c3800 100644
37--- a/drivers/usb/host/xhci-mem.c
38+++ b/drivers/usb/host/xhci-mem.c
39@@ -1704,11 +1704,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
40 int i;
41
42 /* Free the Event Ring Segment Table and the actual Event Ring */
43- if (xhci->ir_set) {
44- xhci_writel(xhci, 0, &xhci->ir_set->erst_size);
45- xhci_write_64(xhci, 0, &xhci->ir_set->erst_base);
46- xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue);
47- }
48 size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
49 if (xhci->erst.entries)
50 dma_free_coherent(&pdev->dev, size,
51@@ -1720,7 +1715,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
52 xhci->event_ring = NULL;
53 xhci_dbg(xhci, "Freed event ring\n");
54
55- xhci_write_64(xhci, 0, &xhci->op_regs->cmd_ring);
56 if (xhci->cmd_ring)
57 xhci_ring_free(xhci, xhci->cmd_ring);
58 xhci->cmd_ring = NULL;
59@@ -1749,7 +1743,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
60 xhci->medium_streams_pool = NULL;
61 xhci_dbg(xhci, "Freed medium stream array pool\n");
62
63- xhci_write_64(xhci, 0, &xhci->op_regs->dcbaa_ptr);
64 if (xhci->dcbaa)
65 dma_free_coherent(&pdev->dev, sizeof(*xhci->dcbaa),
66 xhci->dcbaa, xhci->dcbaa->dma);
67@@ -2358,6 +2351,8 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
68
69 fail:
70 xhci_warn(xhci, "Couldn't initialize memory\n");
71+ xhci_halt(xhci);
72+ xhci_reset(xhci);
73 xhci_mem_cleanup(xhci);
74 return -ENOMEM;
75 }
76--
771.7.9.5
78
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch
new file mode 100644
index 00000000..cadc9293
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0037-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch
@@ -0,0 +1,39 @@
1From 375a67105a521c7ae75a529509218c4bda02c612 Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Fri, 16 Mar 2012 13:27:39 -0700
4Subject: [PATCH 37/69] xhci: Restore event ring dequeue pointer on resume.
5
6commit fb3d85bc7193f23c9a564502df95564c49a32c91 upstream.
7
8The xhci_save_registers() function saved the event ring dequeue pointer
9in the s3 register structure, but xhci_restore_registers() never
10restored it. No other code in the xHCI successful resume path would
11ever restore it either. Fix that.
12
13This should be backported to kernels as old as 2.6.37, that contain the
14commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: PCI power
15management implementation".
16
17Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
18Tested-by: Elric Fu <elricfu1@gmail.com>
19Cc: Andiry Xu <andiry.xu@amd.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/usb/host/xhci.c | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
26index 034f554..4d44713 100644
27--- a/drivers/usb/host/xhci.c
28+++ b/drivers/usb/host/xhci.c
29@@ -681,6 +681,7 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)
30 xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
31 xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);
32 xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base);
33+ xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue);
34 }
35
36 static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch
new file mode 100644
index 00000000..a48a25d5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0038-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch
@@ -0,0 +1,73 @@
1From 75b1fa981bf0fcddcc4a6c8916d6995a273dcfad Mon Sep 17 00:00:00 2001
2From: Elric Fu <elricfu1@gmail.com>
3Date: Mon, 26 Mar 2012 21:16:02 +0800
4Subject: [PATCH 38/69] USB: fix bug of device descriptor got from superspeed
5 device
6
7commit d8aec3dbdfd02627e198e7956ab4aaeba2a349fa upstream.
8
9When the Seagate Goflex USB3.0 device is attached to VIA xHCI
10host, sometimes the device will downgrade mode to high speed.
11By the USB analyzer, I found the device finished the link
12training process and worked at superspeed mode. But the device
13descriptor got from the device shows the device works at 2.1.
14It is very strange and seems like the device controller of
15Seagate Goflex has a little confusion.
16
17The first 8 bytes of device descriptor should be:
1812 01 00 03 00 00 00 09
19
20But the first 8 bytes of wrong device descriptor are:
2112 01 10 02 00 00 00 40
22
23The wrong device descriptor caused the initialization of mass
24storage failed. After a while, the device would be recognized
25as a high speed device and works fine.
26
27This patch will warm reset the device to fix the issue after
28finding the bcdUSB field of device descriptor isn't 0x0300
29but the speed mode of device is superspeed.
30
31This patch should be backported to kernels as old as 3.2, or ones that
32contain the commit 75d7cf72ab9fa01dc70877aa5c68e8ef477229dc "usbcore:
33refine warm reset logic".
34
35Signed-off-by: Elric Fu <elricfu1@gmail.com>
36Acked-by: Andiry Xu <Andiry.Xu@amd.com>
37Acked-by: Sergei Shtylyov <sshtylyov@mvista.com>
38Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
39Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
40---
41 drivers/usb/core/hub.c | 16 ++++++++++++++++
42 1 file changed, 16 insertions(+)
43
44diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
45index f982eeb..18373ec 100644
46--- a/drivers/usb/core/hub.c
47+++ b/drivers/usb/core/hub.c
48@@ -3072,6 +3072,22 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1,
49 if (retval)
50 goto fail;
51
52+ /*
53+ * Some superspeed devices have finished the link training process
54+ * and attached to a superspeed hub port, but the device descriptor
55+ * got from those devices show they aren't superspeed devices. Warm
56+ * reset the port attached by the devices can fix them.
57+ */
58+ if ((udev->speed == USB_SPEED_SUPER) &&
59+ (le16_to_cpu(udev->descriptor.bcdUSB) < 0x0300)) {
60+ dev_err(&udev->dev, "got a wrong device descriptor, "
61+ "warm reset device\n");
62+ hub_port_reset(hub, port1, udev,
63+ HUB_BH_RESET_TIME, true);
64+ retval = -EINVAL;
65+ goto fail;
66+ }
67+
68 if (udev->descriptor.bMaxPacketSize0 == 0xff ||
69 udev->speed == USB_SPEED_SUPER)
70 i = 512;
71--
721.7.9.5
73
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch
new file mode 100644
index 00000000..9229f08a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0039-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch
@@ -0,0 +1,43 @@
1From f9cce3fb45a90fffc8d2bb59a65ebdbfc881d5a8 Mon Sep 17 00:00:00 2001
2From: Elric Fu <elricfu1@gmail.com>
3Date: Thu, 29 Mar 2012 15:47:50 +0800
4Subject: [PATCH 39/69] xHCI: add XHCI_RESET_ON_RESUME quirk for VIA xHCI host
5
6commit 457a4f61f9bfc3ae76e5b49f30f25d86bb696f67 upstream.
7
8The suspend operation of VIA xHCI host have some issues and
9hibernate operation works fine, so The XHCI_RESET_ON_RESUME
10quirk is added for it.
11
12This patch should base on "xHCI: Don't write zeroed pointer
13to xHC registers" that is released by Sarah. Otherwise, the
14host system error will ocurr in the hibernate operation
15process.
16
17This should be backported to stable kernels as old as 2.6.37,
18that contain the commit c877b3b2ad5cb9d4fe523c5496185cc328ff3ae9
19"xhci: Add reset on resume quirk for asrock p67 host".
20
21Signed-off-by: Elric Fu <elricfu1@gmail.com>
22Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24---
25 drivers/usb/host/xhci-pci.c | 2 ++
26 1 file changed, 2 insertions(+)
27
28diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
29index ef98b38..211296a 100644
30--- a/drivers/usb/host/xhci-pci.c
31+++ b/drivers/usb/host/xhci-pci.c
32@@ -95,6 +95,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
33 xhci->quirks |= XHCI_RESET_ON_RESUME;
34 xhci_dbg(xhci, "QUIRK: Resetting on resume\n");
35 }
36+ if (pdev->vendor == PCI_VENDOR_ID_VIA)
37+ xhci->quirks |= XHCI_RESET_ON_RESUME;
38 }
39
40 /* called during probe() after chip reset completes */
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch
new file mode 100644
index 00000000..5a3f5bc0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0040-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch
@@ -0,0 +1,61 @@
1From 84ff902a342b34de5c637eccde339aa7bd644c2b Mon Sep 17 00:00:00 2001
2From: Alex He <alex.he@amd.com>
3Date: Fri, 30 Mar 2012 10:21:38 +0800
4Subject: [PATCH 40/69] xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI
5
6commit 95018a53f7653e791bba1f54c8d75d9cb700d1bd upstream.
7
8Re-define XHCI_LEGACY_DISABLE_SMI and used it in right way. All SMI enable
9bits will be cleared to zero and flag bits 29:31 are also cleared to zero.
10Other bits should be presvered as Table 146.
11
12This patch should be backported to kernels as old as 2.6.31.
13
14Signed-off-by: Alex He <alex.he@amd.com>
15Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/usb/host/pci-quirks.c | 10 +++++++---
19 drivers/usb/host/xhci-ext-caps.h | 5 +++--
20 2 files changed, 10 insertions(+), 5 deletions(-)
21
22diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
23index 7732d69..2afff88 100644
24--- a/drivers/usb/host/pci-quirks.c
25+++ b/drivers/usb/host/pci-quirks.c
26@@ -825,9 +825,13 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)
27 }
28 }
29
30- /* Disable any BIOS SMIs */
31- writel(XHCI_LEGACY_DISABLE_SMI,
32- base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
33+ val = readl(base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
34+ /* Mask off (turn off) any enabled SMIs */
35+ val &= XHCI_LEGACY_DISABLE_SMI;
36+ /* Mask all SMI events bits, RW1C */
37+ val |= XHCI_LEGACY_SMI_EVENTS;
38+ /* Disable any BIOS SMIs and clear all SMI events*/
39+ writel(val, base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);
40
41 if (usb_is_intel_switchable_xhci(pdev))
42 usb_enable_xhci_ports(pdev);
43diff --git a/drivers/usb/host/xhci-ext-caps.h b/drivers/usb/host/xhci-ext-caps.h
44index c7f3312..377f424 100644
45--- a/drivers/usb/host/xhci-ext-caps.h
46+++ b/drivers/usb/host/xhci-ext-caps.h
47@@ -62,8 +62,9 @@
48 /* USB Legacy Support Control and Status Register - section 7.1.2 */
49 /* Add this offset, plus the value of xECP in HCCPARAMS to the base address */
50 #define XHCI_LEGACY_CONTROL_OFFSET (0x04)
51-/* bits 1:2, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */
52-#define XHCI_LEGACY_DISABLE_SMI ((0x3 << 1) + (0xff << 5) + (0x7 << 17))
53+/* bits 1:3, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */
54+#define XHCI_LEGACY_DISABLE_SMI ((0x7 << 1) + (0xff << 5) + (0x7 << 17))
55+#define XHCI_LEGACY_SMI_EVENTS (0x7 << 29)
56
57 /* USB 2.0 xHCI 0.96 L1C capability - section 7.2.2.1.3.2 */
58 #define XHCI_L1C (1 << 16)
59--
601.7.9.5
61
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-fix-tlb-flushing-for-page-table-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-fix-tlb-flushing-for-page-table-pages.patch
new file mode 100644
index 00000000..350e9d76
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0041-fix-tlb-flushing-for-page-table-pages.patch
@@ -0,0 +1,240 @@
1From 0110a55b4db1e1f84f4980aef2528e2cfe6875af Mon Sep 17 00:00:00 2001
2From: Martin Schwidefsky <schwidefsky@de.ibm.com>
3Date: Wed, 11 Apr 2012 14:28:07 +0200
4Subject: [PATCH 41/69] fix tlb flushing for page table pages
5
6commit cd94154cc6a28dd9dc271042c1a59c08d26da886 upstream.
7
8Git commit 36409f6353fc2d7b6516e631415f938eadd92ffa "use generic RCU
9page-table freeing code" introduced a tlb flushing bug. Partially revert
10the above git commit and go back to s390 specific page table flush code.
11
12For s390 the TLB can contain three types of entries, "normal" TLB
13page-table entries, TLB combined region-and-segment-table (CRST) entries
14and real-space entries. Linux does not use real-space entries which
15leaves normal TLB entries and CRST entries. The CRST entries are
16intermediate steps in the page-table translation called translation paths.
17For example a 4K page access in a three-level page table setup will
18create two CRST TLB entries and one page-table TLB entry. The advantage
19of that approach is that a page access next to the previous one can reuse
20the CRST entries and needs just a single read from memory to create the
21page-table TLB entry. The disadvantage is that the TLB flushing rules are
22more complicated, before any page-table may be freed the TLB needs to be
23flushed.
24
25In short: the generic RCU page-table freeing code is incorrect for the
26CRST entries, in particular the check for mm_users < 2 is troublesome.
27
28This is applicable to 3.0+ kernels.
29
30Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
31Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
32---
33 arch/s390/Kconfig | 1 -
34 arch/s390/include/asm/pgalloc.h | 3 --
35 arch/s390/include/asm/tlb.h | 22 +-------------
36 arch/s390/mm/pgtable.c | 63 +++++++++++++++++++++++++++++++++++++--
37 4 files changed, 61 insertions(+), 28 deletions(-)
38
39diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
40index f929db9..a3c40e8 100644
41--- a/arch/s390/Kconfig
42+++ b/arch/s390/Kconfig
43@@ -90,7 +90,6 @@ config S390
44 select HAVE_GET_USER_PAGES_FAST
45 select HAVE_ARCH_MUTEX_CPU_RELAX
46 select HAVE_ARCH_JUMP_LABEL if !MARCH_G5
47- select HAVE_RCU_TABLE_FREE if SMP
48 select ARCH_SAVE_PAGE_KEYS if HIBERNATION
49 select ARCH_INLINE_SPIN_TRYLOCK
50 select ARCH_INLINE_SPIN_TRYLOCK_BH
51diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
52index 8eef9b5..78e3041 100644
53--- a/arch/s390/include/asm/pgalloc.h
54+++ b/arch/s390/include/asm/pgalloc.h
55@@ -22,10 +22,7 @@ void crst_table_free(struct mm_struct *, unsigned long *);
56
57 unsigned long *page_table_alloc(struct mm_struct *, unsigned long);
58 void page_table_free(struct mm_struct *, unsigned long *);
59-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
60 void page_table_free_rcu(struct mmu_gather *, unsigned long *);
61-void __tlb_remove_table(void *_table);
62-#endif
63
64 static inline void clear_table(unsigned long *s, unsigned long val, size_t n)
65 {
66diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h
67index c687a2c..775a5ee 100644
68--- a/arch/s390/include/asm/tlb.h
69+++ b/arch/s390/include/asm/tlb.h
70@@ -30,14 +30,10 @@
71
72 struct mmu_gather {
73 struct mm_struct *mm;
74-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
75 struct mmu_table_batch *batch;
76-#endif
77 unsigned int fullmm;
78- unsigned int need_flush;
79 };
80
81-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
82 struct mmu_table_batch {
83 struct rcu_head rcu;
84 unsigned int nr;
85@@ -49,7 +45,6 @@ struct mmu_table_batch {
86
87 extern void tlb_table_flush(struct mmu_gather *tlb);
88 extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
89-#endif
90
91 static inline void tlb_gather_mmu(struct mmu_gather *tlb,
92 struct mm_struct *mm,
93@@ -57,29 +52,20 @@ static inline void tlb_gather_mmu(struct mmu_gather *tlb,
94 {
95 tlb->mm = mm;
96 tlb->fullmm = full_mm_flush;
97- tlb->need_flush = 0;
98-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
99 tlb->batch = NULL;
100-#endif
101 if (tlb->fullmm)
102 __tlb_flush_mm(mm);
103 }
104
105 static inline void tlb_flush_mmu(struct mmu_gather *tlb)
106 {
107- if (!tlb->need_flush)
108- return;
109- tlb->need_flush = 0;
110- __tlb_flush_mm(tlb->mm);
111-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
112 tlb_table_flush(tlb);
113-#endif
114 }
115
116 static inline void tlb_finish_mmu(struct mmu_gather *tlb,
117 unsigned long start, unsigned long end)
118 {
119- tlb_flush_mmu(tlb);
120+ tlb_table_flush(tlb);
121 }
122
123 /*
124@@ -105,10 +91,8 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
125 static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
126 unsigned long address)
127 {
128-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
129 if (!tlb->fullmm)
130 return page_table_free_rcu(tlb, (unsigned long *) pte);
131-#endif
132 page_table_free(tlb->mm, (unsigned long *) pte);
133 }
134
135@@ -125,10 +109,8 @@ static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
136 #ifdef __s390x__
137 if (tlb->mm->context.asce_limit <= (1UL << 31))
138 return;
139-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
140 if (!tlb->fullmm)
141 return tlb_remove_table(tlb, pmd);
142-#endif
143 crst_table_free(tlb->mm, (unsigned long *) pmd);
144 #endif
145 }
146@@ -146,10 +128,8 @@ static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
147 #ifdef __s390x__
148 if (tlb->mm->context.asce_limit <= (1UL << 42))
149 return;
150-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
151 if (!tlb->fullmm)
152 return tlb_remove_table(tlb, pud);
153-#endif
154 crst_table_free(tlb->mm, (unsigned long *) pud);
155 #endif
156 }
157diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
158index 301c84d..f8ceac4 100644
159--- a/arch/s390/mm/pgtable.c
160+++ b/arch/s390/mm/pgtable.c
161@@ -687,8 +687,6 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
162 }
163 }
164
165-#ifdef CONFIG_HAVE_RCU_TABLE_FREE
166-
167 static void __page_table_free_rcu(void *table, unsigned bit)
168 {
169 struct page *page;
170@@ -742,7 +740,66 @@ void __tlb_remove_table(void *_table)
171 free_pages((unsigned long) table, ALLOC_ORDER);
172 }
173
174-#endif
175+static void tlb_remove_table_smp_sync(void *arg)
176+{
177+ /* Simply deliver the interrupt */
178+}
179+
180+static void tlb_remove_table_one(void *table)
181+{
182+ /*
183+ * This isn't an RCU grace period and hence the page-tables cannot be
184+ * assumed to be actually RCU-freed.
185+ *
186+ * It is however sufficient for software page-table walkers that rely
187+ * on IRQ disabling. See the comment near struct mmu_table_batch.
188+ */
189+ smp_call_function(tlb_remove_table_smp_sync, NULL, 1);
190+ __tlb_remove_table(table);
191+}
192+
193+static void tlb_remove_table_rcu(struct rcu_head *head)
194+{
195+ struct mmu_table_batch *batch;
196+ int i;
197+
198+ batch = container_of(head, struct mmu_table_batch, rcu);
199+
200+ for (i = 0; i < batch->nr; i++)
201+ __tlb_remove_table(batch->tables[i]);
202+
203+ free_page((unsigned long)batch);
204+}
205+
206+void tlb_table_flush(struct mmu_gather *tlb)
207+{
208+ struct mmu_table_batch **batch = &tlb->batch;
209+
210+ if (*batch) {
211+ __tlb_flush_mm(tlb->mm);
212+ call_rcu_sched(&(*batch)->rcu, tlb_remove_table_rcu);
213+ *batch = NULL;
214+ }
215+}
216+
217+void tlb_remove_table(struct mmu_gather *tlb, void *table)
218+{
219+ struct mmu_table_batch **batch = &tlb->batch;
220+
221+ if (*batch == NULL) {
222+ *batch = (struct mmu_table_batch *)
223+ __get_free_page(GFP_NOWAIT | __GFP_NOWARN);
224+ if (*batch == NULL) {
225+ __tlb_flush_mm(tlb->mm);
226+ tlb_remove_table_one(table);
227+ return;
228+ }
229+ (*batch)->nr = 0;
230+ }
231+ (*batch)->tables[(*batch)->nr++] = table;
232+ if ((*batch)->nr == MAX_TABLE_BATCH)
233+ tlb_table_flush(tlb);
234+}
235
236 /*
237 * switch on pgstes for its userspace process (for kvm)
238--
2391.7.9.5
240
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-clear-pending-interrupts.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-clear-pending-interrupts.patch
new file mode 100644
index 00000000..ecece35d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0042-serial-PL011-clear-pending-interrupts.patch
@@ -0,0 +1,82 @@
1From 6408483ea69660e6ad8a2a8852edb9cd539cd51d Mon Sep 17 00:00:00 2001
2From: Linus Walleij <linus.walleij@linaro.org>
3Date: Tue, 13 Mar 2012 13:27:23 +0100
4Subject: [PATCH 42/69] serial: PL011: clear pending interrupts
5
6commit 9b96fbacda34079dea0638ee1e92c56286f6114a upstream.
7
8Chanho Min reported that when the boot loader transfers
9control to the kernel, there may be pending interrupts
10causing the UART to lock up in an eternal loop trying to
11pick tokens from the FIFO (since the RX interrupt flag
12indicates there are tokens) while in practice there are
13no tokens - in fact there is only a pending IRQ flag.
14
15This patch address the issue with a combination of two
16patches suggested by Russell King that clears and mask
17all interrupts at probe() and clears any pending error
18and RX interrupts at port startup time.
19
20We suspect the spurious interrupts are a side-effect of
21switching the UART from FIFO to non-FIFO mode.
22
23Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu@stericsson.com>
24Reported-by: Chanho Min <chanho0207@gmail.com>
25Suggested-by: Russell King <linux@arm.linux.org.uk>
26Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
27Reviewed-by: Jong-Sung Kim <neidhard.kim@lge.com>
28Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29---
30 drivers/tty/serial/amba-pl011.c | 15 +++++++++++----
31 1 file changed, 11 insertions(+), 4 deletions(-)
32
33diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
34index 8e00926..dddc3f2 100644
35--- a/drivers/tty/serial/amba-pl011.c
36+++ b/drivers/tty/serial/amba-pl011.c
37@@ -1380,6 +1380,10 @@ static int pl011_startup(struct uart_port *port)
38
39 uap->port.uartclk = clk_get_rate(uap->clk);
40
41+ /* Clear pending error and receive interrupts */
42+ writew(UART011_OEIS | UART011_BEIS | UART011_PEIS | UART011_FEIS |
43+ UART011_RTIS | UART011_RXIS, uap->port.membase + UART011_ICR);
44+
45 /*
46 * Allocate the IRQ
47 */
48@@ -1414,10 +1418,6 @@ static int pl011_startup(struct uart_port *port)
49 cr = UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE;
50 writew(cr, uap->port.membase + UART011_CR);
51
52- /* Clear pending error interrupts */
53- writew(UART011_OEIS | UART011_BEIS | UART011_PEIS | UART011_FEIS,
54- uap->port.membase + UART011_ICR);
55-
56 /*
57 * initialise the old status of the modem signals
58 */
59@@ -1432,6 +1432,9 @@ static int pl011_startup(struct uart_port *port)
60 * as well.
61 */
62 spin_lock_irq(&uap->port.lock);
63+ /* Clear out any spuriously appearing RX interrupts */
64+ writew(UART011_RTIS | UART011_RXIS,
65+ uap->port.membase + UART011_ICR);
66 uap->im = UART011_RTIM;
67 if (!pl011_dma_rx_running(uap))
68 uap->im |= UART011_RXIM;
69@@ -1916,6 +1919,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
70 goto unmap;
71 }
72
73+ /* Ensure interrupts from this UART are masked and cleared */
74+ writew(0, uap->port.membase + UART011_IMSC);
75+ writew(0xffff, uap->port.membase + UART011_ICR);
76+
77 uap->vendor = vendor;
78 uap->lcrh_rx = vendor->lcrh_rx;
79 uap->lcrh_tx = vendor->lcrh_tx;
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-serial-PL011-move-interrupt-clearing.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-serial-PL011-move-interrupt-clearing.patch
new file mode 100644
index 00000000..bc47af07
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0043-serial-PL011-move-interrupt-clearing.patch
@@ -0,0 +1,55 @@
1From 02822f5ea52d9c9c4d197187b1a2553fe70f106c Mon Sep 17 00:00:00 2001
2From: Linus Walleij <linus.walleij@linaro.org>
3Date: Wed, 21 Mar 2012 20:15:18 +0100
4Subject: [PATCH 43/69] serial: PL011: move interrupt clearing
5
6commit c3d8b76f61586714cdc5f219ba45592a54caaa55 upstream.
7
8Commit 360f748b204275229f8398cb2f9f53955db1503b
9"serial: PL011: clear pending interrupts"
10attempts to clear interrupts by writing to a
11yet-unassigned memory address. This fixes the issue.
12
13The breaking patch is marked for stable so should be
14carried along with the other patch.
15
16Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu@stericsson.com>
17Cc: Russell King <linux@arm.linux.org.uk>
18Cc: Nicolas Pitre <nico@fluxnic.net>
19Reported-by: Viresh Kumar <viresh.kumar@st.com>
20Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
21Tested-by: Grant Likely <grant.likely@secretlab.ca>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/tty/serial/amba-pl011.c | 8 ++++----
25 1 file changed, 4 insertions(+), 4 deletions(-)
26
27diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
28index dddc3f2..6da8cf8 100644
29--- a/drivers/tty/serial/amba-pl011.c
30+++ b/drivers/tty/serial/amba-pl011.c
31@@ -1919,10 +1919,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
32 goto unmap;
33 }
34
35- /* Ensure interrupts from this UART are masked and cleared */
36- writew(0, uap->port.membase + UART011_IMSC);
37- writew(0xffff, uap->port.membase + UART011_ICR);
38-
39 uap->vendor = vendor;
40 uap->lcrh_rx = vendor->lcrh_rx;
41 uap->lcrh_tx = vendor->lcrh_tx;
42@@ -1939,6 +1935,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
43 uap->port.line = i;
44 pl011_dma_probe(uap);
45
46+ /* Ensure interrupts from this UART are masked and cleared */
47+ writew(0, uap->port.membase + UART011_IMSC);
48+ writew(0xffff, uap->port.membase + UART011_ICR);
49+
50 snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev));
51
52 amba_ports[i] = uap;
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-fcaps-clear-the-same-personality-flags-as-suid-when-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-fcaps-clear-the-same-personality-flags-as-suid-when-.patch
new file mode 100644
index 00000000..b2e4de61
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0044-fcaps-clear-the-same-personality-flags-as-suid-when-.patch
@@ -0,0 +1,41 @@
1From 0acc120610478e7f4b80e0d1379bd927c90eaff4 Mon Sep 17 00:00:00 2001
2From: Eric Paris <eparis@redhat.com>
3Date: Tue, 17 Apr 2012 16:26:54 -0400
4Subject: [PATCH 44/69] fcaps: clear the same personality flags as suid when
5 fcaps are used
6
7commit d52fc5dde171f030170a6cb78034d166b13c9445 upstream.
8
9If a process increases permissions using fcaps all of the dangerous
10personality flags which are cleared for suid apps should also be cleared.
11Thus programs given priviledge with fcaps will continue to have address space
12randomization enabled even if the parent tried to disable it to make it
13easier to attack.
14
15Signed-off-by: Eric Paris <eparis@redhat.com>
16Reviewed-by: Serge Hallyn <serge.hallyn@canonical.com>
17Signed-off-by: James Morris <james.l.morris@oracle.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 security/commoncap.c | 5 +++++
21 1 file changed, 5 insertions(+)
22
23diff --git a/security/commoncap.c b/security/commoncap.c
24index ee4f848..0aee106 100644
25--- a/security/commoncap.c
26+++ b/security/commoncap.c
27@@ -514,6 +514,11 @@ int cap_bprm_set_creds(struct linux_binprm *bprm)
28 }
29 skip:
30
31+ /* if we have fs caps, clear dangerous personality flags */
32+ if (!cap_issubset(new->cap_permitted, old->cap_permitted))
33+ bprm->per_clear |= PER_CLEAR_ON_SETID;
34+
35+
36 /* Don't let someone trace a set[ug]id/setpcap binary with the revised
37 * credentials unless they have the appropriate permit
38 */
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-ath9k-fix-max-noise-floor-threshold.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-ath9k-fix-max-noise-floor-threshold.patch
new file mode 100644
index 00000000..618a68a1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0045-ath9k-fix-max-noise-floor-threshold.patch
@@ -0,0 +1,56 @@
1From ffdc1eb0a3c60111912b7bfe80c3a9358edd6b42 Mon Sep 17 00:00:00 2001
2From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
3Date: Thu, 15 Mar 2012 06:08:04 +0530
4Subject: [PATCH 45/69] ath9k: fix max noise floor threshold
5
6commit 2ee0a07028d2cde6e131b73f029dae2b93c50f3a upstream.
7
8Currently the maximum noise floor limit is set as too high (-60dB). The
9assumption of having a higher threshold limit is that it would help
10de-sensitize the receiver (reduce phy errors) from continuous
11interference. But when we have a bursty interference where there are
12collisions and then free air time and if the receiver is desensitized too
13much, it will miss the normal packets too. Lets make use of chips
14specific min, nom and max limits always. This patch helps to improve the
15connection stability in congested networks.
16
17Cc: Paul Stewart <pstew@google.com>
18Tested-by: Gary Morain <gmorain@google.com>
19Signed-off-by: Madhan Jaganathan <madhanj@qca.qualcomm.com>
20Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
21Signed-off-by: John W. Linville <linville@tuxdriver.com>
22[bwh: Backported to 3.0/3.2: adjust context]
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/net/wireless/ath/ath9k/calib.c | 5 ++---
27 1 file changed, 2 insertions(+), 3 deletions(-)
28
29diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
30index 8ddef3e..d771de5 100644
31--- a/drivers/net/wireless/ath/ath9k/calib.c
32+++ b/drivers/net/wireless/ath/ath9k/calib.c
33@@ -20,7 +20,6 @@
34
35 /* Common calibration code */
36
37-#define ATH9K_NF_TOO_HIGH -60
38
39 static int16_t ath9k_hw_get_nf_hist_mid(int16_t *nfCalBuffer)
40 {
41@@ -348,10 +347,10 @@ static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf)
42 "NF calibrated [%s] [chain %d] is %d\n",
43 (i >= 3 ? "ext" : "ctl"), i % 3, nf[i]);
44
45- if (nf[i] > ATH9K_NF_TOO_HIGH) {
46+ if (nf[i] > limit->max) {
47 ath_dbg(common, ATH_DBG_CALIBRATE,
48 "NF[%d] (%d) > MAX (%d), correcting to MAX\n",
49- i, nf[i], ATH9K_NF_TOO_HIGH);
50+ i, nf[i], limit->max);
51 nf[i] = limit->max;
52 } else if (nf[i] < limit->min) {
53 ath_dbg(common, ATH_DBG_CALIBRATE,
54--
551.7.9.5
56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-xhci-Fix-register-save-restore-order.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-xhci-Fix-register-save-restore-order.patch
new file mode 100644
index 00000000..2fe2c5e0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0046-xhci-Fix-register-save-restore-order.patch
@@ -0,0 +1,62 @@
1From d4e6ce02459552a127973c9c204509136b940671 Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Fri, 16 Mar 2012 13:19:35 -0700
4Subject: [PATCH 46/69] xhci: Fix register save/restore order.
5
6commit c7713e736526d8c9f6f87716fb90562a8ffaff2c upstream.
7
8The xHCI 1.0 spec errata released on June 13, 2011, changes the ordering
9that the xHCI registers are saved and restored in. It moves the
10interrupt pending (IMAN) and interrupt control (IMOD) registers to be
11saved and restored last. I believe that's because the host controller
12may attempt to fetch the event ring table when interrupts are
13re-enabled. Therefore we need to restore the event ring registers
14before we re-enable interrupts.
15
16This should be backported to kernels as old as 2.6.37, that contain the
17commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: PCI power
18management implementation"
19
20Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
21Tested-by: Elric Fu <elricfu1@gmail.com>
22Cc: Andiry Xu <andiry.xu@amd.com>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24---
25 drivers/usb/host/xhci.c | 8 ++++----
26 1 file changed, 4 insertions(+), 4 deletions(-)
27
28diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
29index 4d44713..4c00606 100644
30--- a/drivers/usb/host/xhci.c
31+++ b/drivers/usb/host/xhci.c
32@@ -664,11 +664,11 @@ static void xhci_save_registers(struct xhci_hcd *xhci)
33 xhci->s3.dev_nt = xhci_readl(xhci, &xhci->op_regs->dev_notification);
34 xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);
35 xhci->s3.config_reg = xhci_readl(xhci, &xhci->op_regs->config_reg);
36- xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
37- xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);
38 xhci->s3.erst_size = xhci_readl(xhci, &xhci->ir_set->erst_size);
39 xhci->s3.erst_base = xhci_read_64(xhci, &xhci->ir_set->erst_base);
40 xhci->s3.erst_dequeue = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue);
41+ xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
42+ xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);
43 }
44
45 static void xhci_restore_registers(struct xhci_hcd *xhci)
46@@ -677,11 +677,11 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)
47 xhci_writel(xhci, xhci->s3.dev_nt, &xhci->op_regs->dev_notification);
48 xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr);
49 xhci_writel(xhci, xhci->s3.config_reg, &xhci->op_regs->config_reg);
50- xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending);
51- xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
52 xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);
53 xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base);
54 xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue);
55+ xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending);
56+ xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
57 }
58
59 static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
60--
611.7.9.5
62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch
new file mode 100644
index 00000000..4e3ff35d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0047-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch
@@ -0,0 +1,133 @@
1From 1eb32b0dc5c5286345e96240894af14de856e515 Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Thu, 15 Mar 2012 14:48:41 +0100
4Subject: [PATCH 47/69] Bluetooth: hci_core: fix NULL-pointer dereference at
5 unregister
6
7commit 94324962066231a938564bebad0f941cd2d06bb2 upstream.
8
9Make sure hci_dev_open returns immediately if hci_dev_unregister has
10been called.
11
12This fixes a race between hci_dev_open and hci_dev_unregister which can
13lead to a NULL-pointer dereference.
14
15Bug is 100% reproducible using hciattach and a disconnected serial port:
16
170. # hciattach -n /dev/ttyO1 any noflow
18
191. hci_dev_open called from hci_power_on grabs req lock
202. hci_init_req executes but device fails to initialise (times out
21 eventually)
223. hci_dev_open is called from hci_sock_ioctl and sleeps on req lock
234. hci_uart_tty_close calls hci_dev_unregister and sleeps on req lock in
24 hci_dev_do_close
255. hci_dev_open (1) releases req lock
266. hci_dev_do_close grabs req lock and returns as device is not up
277. hci_dev_unregister sleeps in destroy_workqueue
288. hci_dev_open (3) grabs req lock, calls hci_init_req and eventually sleeps
299. hci_dev_unregister finishes, while hci_dev_open is still running...
30
31[ 79.627136] INFO: trying to register non-static key.
32[ 79.632354] the code is fine but needs lockdep annotation.
33[ 79.638122] turning off the locking correctness validator.
34[ 79.643920] [<c00188bc>] (unwind_backtrace+0x0/0xf8) from [<c00729c4>] (__lock_acquire+0x1590/0x1ab0)
35[ 79.653594] [<c00729c4>] (__lock_acquire+0x1590/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
36[ 79.663085] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0040a88>] (run_timer_softirq+0x150/0x3ac)
37[ 79.672668] [<c0040a88>] (run_timer_softirq+0x150/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
38[ 79.682281] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
39[ 79.690856] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
40[ 79.699157] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
41[ 79.708648] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__irq_usr+0x3c/0x60)
42[ 79.718048] Exception stack(0xcf281fb0 to 0xcf281ff8)
43[ 79.723358] 1fa0: 0001e6a0 be8dab00 0001e698 00036698
44[ 79.731933] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
45[ 79.740509] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
46[ 79.747497] Unable to handle kernel NULL pointer dereference at virtual address 00000000
47[ 79.756011] pgd = cf3b4000
48[ 79.758850] [00000000] *pgd=8f0c7831, *pte=00000000, *ppte=00000000
49[ 79.765502] Internal error: Oops: 80000007 [#1]
50[ 79.770294] Modules linked in:
51[ 79.773529] CPU: 0 Tainted: G W (3.3.0-rc6-00002-gb5d5c87 #421)
52[ 79.781066] PC is at 0x0
53[ 79.783721] LR is at run_timer_softirq+0x16c/0x3ac
54[ 79.788787] pc : [<00000000>] lr : [<c0040aa4>] psr: 60000113
55[ 79.788787] sp : cf281ee0 ip : 00000000 fp : cf280000
56[ 79.800903] r10: 00000004 r9 : 00000100 r8 : b6f234d0
57[ 79.806427] r7 : c0519c28 r6 : cf093488 r5 : c0561a00 r4 : 00000000
58[ 79.813323] r3 : 00000000 r2 : c054eee0 r1 : 00000001 r0 : 00000000
59[ 79.820190] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
60[ 79.827728] Control: 10c5387d Table: 8f3b4019 DAC: 00000015
61[ 79.833801] Process gpsd (pid: 1265, stack limit = 0xcf2802e8)
62[ 79.839965] Stack: (0xcf281ee0 to 0xcf282000)
63[ 79.844573] 1ee0: 00000002 00000000 c0040a24 00000000 00000002 cf281f08 00200200 00000000
64[ 79.853210] 1f00: 00000000 cf281f18 cf281f08 00000000 00000000 00000000 cf281f18 cf281f18
65[ 79.861816] 1f20: 00000000 00000001 c056184c 00000000 00000001 b6f234d0 c0561848 00000004
66[ 79.870452] 1f40: cf280000 c003a3b8 c051e79c 00000001 00000000 00000100 3fa9e7b8 0000000a
67[ 79.879089] 1f60: 00000025 cf280000 00000025 00000000 00000000 b6f234d0 00000000 00000004
68[ 79.887756] 1f80: 00000000 c003a924 c053ad38 c0013a50 fa200000 cf281fb0 ffffffff c0008530
69[ 79.896362] 1fa0: 0001e6a0 0000aab8 80000010 c037499c 0001e6a0 be8dab00 0001e698 00036698
70[ 79.904998] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
71[ 79.913665] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff 00fbf700 04ffff00
72[ 79.922302] [<c0040aa4>] (run_timer_softirq+0x16c/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
73[ 79.931945] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
74[ 79.940582] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
75[ 79.948913] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
76[ 79.958404] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__irq_usr+0x3c/0x60)
77[ 79.967773] Exception stack(0xcf281fb0 to 0xcf281ff8)
78[ 79.973083] 1fa0: 0001e6a0 be8dab00 0001e698 00036698
79[ 79.981658] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
80[ 79.990234] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
81[ 79.997161] Code: bad PC value
82[ 80.000396] ---[ end trace 6f6739840475f9ee ]---
83[ 80.005279] Kernel panic - not syncing: Fatal exception in interrupt
84
85Signed-off-by: Johan Hovold <jhovold@gmail.com>
86Acked-by: Marcel Holtmann <marcel@holtmann.org>
87Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
88Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
89---
90 include/net/bluetooth/hci.h | 1 +
91 net/bluetooth/hci_core.c | 7 +++++++
92 2 files changed, 8 insertions(+)
93
94diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
95index aaf79af..a7e13bf 100644
96--- a/include/net/bluetooth/hci.h
97+++ b/include/net/bluetooth/hci.h
98@@ -84,6 +84,7 @@ enum {
99 HCI_SERVICE_CACHE,
100 HCI_LINK_KEYS,
101 HCI_DEBUG_KEYS,
102+ HCI_UNREGISTER,
103
104 HCI_RESET,
105 };
106diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
107index b84458d..857dc88 100644
108--- a/net/bluetooth/hci_core.c
109+++ b/net/bluetooth/hci_core.c
110@@ -510,6 +510,11 @@ int hci_dev_open(__u16 dev)
111
112 hci_req_lock(hdev);
113
114+ if (test_bit(HCI_UNREGISTER, &hdev->flags)) {
115+ ret = -ENODEV;
116+ goto done;
117+ }
118+
119 if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
120 ret = -ERFKILL;
121 goto done;
122@@ -1540,6 +1545,8 @@ int hci_unregister_dev(struct hci_dev *hdev)
123
124 BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
125
126+ set_bit(HCI_UNREGISTER, &hdev->flags);
127+
128 write_lock_bh(&hci_dev_list_lock);
129 list_del(&hdev->list);
130 write_unlock_bh(&hci_dev_list_lock);
131--
1321.7.9.5
133
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch
new file mode 100644
index 00000000..1f78b921
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0048-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch
@@ -0,0 +1,63 @@
1From 02f5e653d3083265e70a5cc00f050b6ec394fb83 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya-linux@dsn.lapis-semi.com>
3Date: Fri, 28 Oct 2011 09:23:32 +0900
4Subject: [PATCH 48/69] pch_gpio: Support new device LAPIS Semiconductor
5 ML7831 IOH
6
7commit 868fea0507308b6548bba7debe5f5c2d5ca47fca upstream.
8
9ML7831 is companion chip for Intel Atom E6xx series.
10
11Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.lapis-semi.com>
12Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/gpio/Kconfig | 11 ++++++-----
16 drivers/gpio/gpio-pch.c | 1 +
17 2 files changed, 7 insertions(+), 5 deletions(-)
18
19diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
20index 8482a23..4e04157 100644
21--- a/drivers/gpio/Kconfig
22+++ b/drivers/gpio/Kconfig
23@@ -387,7 +387,7 @@ config GPIO_LANGWELL
24 Say Y here to support Intel Langwell/Penwell GPIO.
25
26 config GPIO_PCH
27- tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO"
28+ tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
29 depends on PCI && X86
30 select GENERIC_IRQ_CHIP
31 help
32@@ -395,11 +395,12 @@ config GPIO_PCH
33 which is an IOH(Input/Output Hub) for x86 embedded processor.
34 This driver can access PCH GPIO device.
35
36- This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
37- Output Hub), ML7223.
38+ This driver also can be used for LAPIS Semiconductor IOH(Input/
39+ Output Hub), ML7223 and ML7831.
40 ML7223 IOH is for MP(Media Phone) use.
41- ML7223 is companion chip for Intel Atom E6xx series.
42- ML7223 is completely compatible for Intel EG20T PCH.
43+ ML7831 IOH is for general purpose use.
44+ ML7223/ML7831 is companion chip for Intel Atom E6xx series.
45+ ML7223/ML7831 is completely compatible for Intel EG20T PCH.
46
47 config GPIO_ML_IOH
48 tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
49diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
50index a6008e1..eb574f2 100644
51--- a/drivers/gpio/gpio-pch.c
52+++ b/drivers/gpio/gpio-pch.c
53@@ -524,6 +524,7 @@ static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = {
54 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },
55 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },
56 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },
57+ { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },
58 { 0, }
59 };
60 MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch
new file mode 100644
index 00000000..23824a74
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0049-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch
@@ -0,0 +1,35 @@
1From 9fb55b40aa4e085f86bfce237a482b13847fdc01 Mon Sep 17 00:00:00 2001
2From: Axel Lin <axel.lin@gmail.com>
3Date: Wed, 1 Feb 2012 10:51:53 +0800
4Subject: [PATCH 49/69] gpio: Add missing spin_lock_init in gpio-pch driver
5
6commit d166370ad86b33b1111af3a0cdd7de94e03789a6 upstream.
7
8This bug was introduced by commit d568a681
9"gpio-pch: add spinlock in suspend/resume processing"
10which adds a spinlock to struct pch_gpio but never init the spinlock.
11
12Reported-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
13Signed-off-by: Axel Lin <axel.lin@gmail.com>
14Acked-by: Linus Walleij <linus.walleij@linaro.org>
15Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/gpio/gpio-pch.c | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
22index eb574f2..779ff70 100644
23--- a/drivers/gpio/gpio-pch.c
24+++ b/drivers/gpio/gpio-pch.c
25@@ -392,6 +392,7 @@ static int __devinit pch_gpio_probe(struct pci_dev *pdev,
26 chip->reg = chip->base;
27 pci_set_drvdata(pdev, chip);
28 mutex_init(&chip->lock);
29+ spin_lock_init(&chip->spinlock);
30 pch_gpio_setup(chip);
31 ret = gpiochip_add(&chip->gpio);
32 if (ret) {
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-disconnect-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-disconnect-issue.patch
new file mode 100644
index 00000000..6588e3c9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0050-usb-gadget-pch_udc-Fix-disconnect-issue.patch
@@ -0,0 +1,42 @@
1From 51d31aff64b1ebc13cab146aea7e34e0b9deec9a Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 12 Jan 2012 11:27:05 +0900
4Subject: [PATCH 50/69] usb: gadget: pch_udc: Fix disconnect issue
5
6commit c50a3bff0edb0acd49d8033a12ea4668e09a31ad upstream.
7
8ISSUE:
9When the driver notifies a gadget of a disconnect event, a system
10rarely freezes.
11
12CAUSE:
13When the driver calls dev->driver->disconnect(), it is not calling
14spin_unlock().
15
16Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
17Signed-off-by: Felipe Balbi <balbi@ti.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/usb/gadget/pch_udc.c | 5 ++++-
21 1 file changed, 4 insertions(+), 1 deletion(-)
22
23diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
24index dd2313c..521e995 100644
25--- a/drivers/usb/gadget/pch_udc.c
26+++ b/drivers/usb/gadget/pch_udc.c
27@@ -2335,8 +2335,11 @@ static void pch_udc_svc_ur_interrupt(struct pch_udc_dev *dev)
28 /* Complete request queue */
29 empty_req_queue(ep);
30 }
31- if (dev->driver && dev->driver->disconnect)
32+ if (dev->driver && dev->driver->disconnect) {
33+ spin_unlock(&dev->lock);
34 dev->driver->disconnect(&dev->gadget);
35+ spin_lock(&dev->lock);
36+ }
37 }
38
39 /**
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-wrong-return-value.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-wrong-return-value.patch
new file mode 100644
index 00000000..decab7b0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0051-usb-gadget-pch_udc-Fix-wrong-return-value.patch
@@ -0,0 +1,42 @@
1From 8fd36443bed52de1ac27dade568e7a3d94158d13 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 12 Jan 2012 11:27:06 +0900
4Subject: [PATCH 51/69] usb: gadget: pch_udc: Fix wrong return value
5
6commit c802672cd36cd063bfd54d54c8c34825ab5b2357 upstream.
7
8ISSUE:
9If the return value of pch_udc_pcd_init() is False, the return value of
10this function is unsettled.
11Since pch_udc_pcd_init() always returns 0, there is not actually the issue.
12
13CAUSE:
14If pch_udc_pcd_init() is True, the variable, retval, is not set for an
15appropriate value.
16
17Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
18Signed-off-by: Felipe Balbi <balbi@ti.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/usb/gadget/pch_udc.c | 4 +++-
22 1 file changed, 3 insertions(+), 1 deletion(-)
23
24diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
25index 521e995..a9a7d8a 100644
26--- a/drivers/usb/gadget/pch_udc.c
27+++ b/drivers/usb/gadget/pch_udc.c
28@@ -2915,8 +2915,10 @@ static int pch_udc_probe(struct pci_dev *pdev,
29 }
30 pch_udc = dev;
31 /* initialize the hardware */
32- if (pch_udc_pcd_init(dev))
33+ if (pch_udc_pcd_init(dev)) {
34+ retval = -ENODEV;
35 goto finished;
36+ }
37 if (request_irq(pdev->irq, pch_udc_isr, IRQF_SHARED, KBUILD_MODNAME,
38 dev)) {
39 dev_err(&pdev->dev, "%s: request_irq(%d) fail\n", __func__,
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch
new file mode 100644
index 00000000..fda0ca92
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0052-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch
@@ -0,0 +1,45 @@
1From c0aaf320ddf17688ad75ab9f024f789b4cb89365 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 12 Jan 2012 11:27:07 +0900
4Subject: [PATCH 52/69] usb: gadget: pch_udc: Fix USB suspend issue
5
6commit 84566abba058b2aae8d603dfa90b5a3778a6714f upstream.
7
8ISSUE:
9After USB Suspend, a system rarely freezes.
10
11CAUSE:
12When USB Suspend occurred, the driver is not notifying
13a gadget of the event.
14
15Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
16Signed-off-by: Felipe Balbi <balbi@ti.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/usb/gadget/pch_udc.c | 9 ++++++++-
20 1 file changed, 8 insertions(+), 1 deletion(-)
21
22diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
23index a9a7d8a..3ab799c 100644
24--- a/drivers/usb/gadget/pch_udc.c
25+++ b/drivers/usb/gadget/pch_udc.c
26@@ -2475,8 +2475,15 @@ static void pch_udc_dev_isr(struct pch_udc_dev *dev, u32 dev_intr)
27 if (dev_intr & UDC_DEVINT_SC)
28 pch_udc_svc_cfg_interrupt(dev);
29 /* USB Suspend interrupt */
30- if (dev_intr & UDC_DEVINT_US)
31+ if (dev_intr & UDC_DEVINT_US) {
32+ if (dev->driver
33+ && dev->driver->suspend) {
34+ spin_unlock(&dev->lock);
35+ dev->driver->suspend(&dev->gadget);
36+ spin_lock(&dev->lock);
37+ }
38 dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n");
39+ }
40 /* Clear the SOF interrupt, if enabled */
41 if (dev_intr & UDC_DEVINT_SOF)
42 dev_dbg(&dev->pdev->dev, "SOF\n");
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch
new file mode 100644
index 00000000..379b748e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0053-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch
@@ -0,0 +1,153 @@
1From 9200ef1704e7415a883be5ff751f486da1df7212 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 12 Jan 2012 11:27:08 +0900
4Subject: [PATCH 53/69] usb: gadget: pch_udc: Fix usb/gadget/pch_udc: Fix
5 ether gadget connect/disconnect issue
6
7commit 1c575d2d2e3ff2a7cb3c2e2165064199cfd8ad32 upstream.
8
9ISSUE:
10After a USB cable is connect/disconnected, the system rarely freezes.
11
12CAUSE:
13Since the USB device controller cannot know to disconnect the USB cable, when
14it is used without detecting VBUS by GPIO, the UDC driver does not notify to
15USB Gadget.
16
17Since USB Gadget cannot know to disconnect, a false setting occurred when the
18USB cable is connected/disconnect repeatedly.
19
20Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
21Signed-off-by: Felipe Balbi <balbi@ti.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/usb/gadget/pch_udc.c | 70 +++++++++++++++++++++++++++++++++++++++---
25 1 file changed, 66 insertions(+), 4 deletions(-)
26
27diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
28index 3ab799c..f232e65 100644
29--- a/drivers/usb/gadget/pch_udc.c
30+++ b/drivers/usb/gadget/pch_udc.c
31@@ -311,6 +311,7 @@ struct pch_udc_ep {
32 * @registered: driver regsitered with system
33 * @suspended: driver in suspended state
34 * @connected: gadget driver associated
35+ * @vbus_session: required vbus_session state
36 * @set_cfg_not_acked: pending acknowledgement 4 setup
37 * @waiting_zlp_ack: pending acknowledgement 4 ZLP
38 * @data_requests: DMA pool for data requests
39@@ -337,6 +338,7 @@ struct pch_udc_dev {
40 registered:1,
41 suspended:1,
42 connected:1,
43+ vbus_session:1,
44 set_cfg_not_acked:1,
45 waiting_zlp_ack:1;
46 struct pci_pool *data_requests;
47@@ -554,6 +556,31 @@ static void pch_udc_clear_disconnect(struct pch_udc_dev *dev)
48 }
49
50 /**
51+ * pch_udc_reconnect() - This API initializes usb device controller,
52+ * and clear the disconnect status.
53+ * @dev: Reference to pch_udc_regs structure
54+ */
55+static void pch_udc_init(struct pch_udc_dev *dev);
56+static void pch_udc_reconnect(struct pch_udc_dev *dev)
57+{
58+ pch_udc_init(dev);
59+
60+ /* enable device interrupts */
61+ /* pch_udc_enable_interrupts() */
62+ pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR,
63+ UDC_DEVINT_UR | UDC_DEVINT_US |
64+ UDC_DEVINT_ENUM |
65+ UDC_DEVINT_SI | UDC_DEVINT_SC);
66+
67+ /* Clear the disconnect */
68+ pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
69+ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD);
70+ mdelay(1);
71+ /* Resume USB signalling */
72+ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
73+}
74+
75+/**
76 * pch_udc_vbus_session() - set or clearr the disconnect status.
77 * @dev: Reference to pch_udc_regs structure
78 * @is_active: Parameter specifying the action
79@@ -563,10 +590,18 @@ static void pch_udc_clear_disconnect(struct pch_udc_dev *dev)
80 static inline void pch_udc_vbus_session(struct pch_udc_dev *dev,
81 int is_active)
82 {
83- if (is_active)
84- pch_udc_clear_disconnect(dev);
85- else
86+ if (is_active) {
87+ pch_udc_reconnect(dev);
88+ dev->vbus_session = 1;
89+ } else {
90+ if (dev->driver && dev->driver->disconnect) {
91+ spin_unlock(&dev->lock);
92+ dev->driver->disconnect(&dev->gadget);
93+ spin_lock(&dev->lock);
94+ }
95 pch_udc_set_disconnect(dev);
96+ dev->vbus_session = 0;
97+ }
98 }
99
100 /**
101@@ -1126,7 +1161,17 @@ static int pch_udc_pcd_pullup(struct usb_gadget *gadget, int is_on)
102 if (!gadget)
103 return -EINVAL;
104 dev = container_of(gadget, struct pch_udc_dev, gadget);
105- pch_udc_vbus_session(dev, is_on);
106+ if (is_on) {
107+ pch_udc_reconnect(dev);
108+ } else {
109+ if (dev->driver && dev->driver->disconnect) {
110+ spin_unlock(&dev->lock);
111+ dev->driver->disconnect(&dev->gadget);
112+ spin_lock(&dev->lock);
113+ }
114+ pch_udc_set_disconnect(dev);
115+ }
116+
117 return 0;
118 }
119
120@@ -2482,6 +2527,15 @@ static void pch_udc_dev_isr(struct pch_udc_dev *dev, u32 dev_intr)
121 dev->driver->suspend(&dev->gadget);
122 spin_lock(&dev->lock);
123 }
124+
125+ if (dev->vbus_session == 0) {
126+ if (dev->driver && dev->driver->disconnect) {
127+ spin_unlock(&dev->lock);
128+ dev->driver->disconnect(&dev->gadget);
129+ spin_lock(&dev->lock);
130+ }
131+ pch_udc_reconnect(dev);
132+ }
133 dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n");
134 }
135 /* Clear the SOF interrupt, if enabled */
136@@ -2509,6 +2563,14 @@ static irqreturn_t pch_udc_isr(int irq, void *pdev)
137 dev_intr = pch_udc_read_device_interrupts(dev);
138 ep_intr = pch_udc_read_ep_interrupts(dev);
139
140+ /* For a hot plug, this find that the controller is hung up. */
141+ if (dev_intr == ep_intr)
142+ if (dev_intr == pch_udc_readl(dev, UDC_DEVCFG_ADDR)) {
143+ dev_dbg(&dev->pdev->dev, "UDC: Hung up\n");
144+ /* The controller is reset */
145+ pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR);
146+ return IRQ_HANDLED;
147+ }
148 if (dev_intr)
149 /* Clear device interrupts */
150 pch_udc_write_device_interrupts(dev, dev_intr);
151--
1521.7.9.5
153
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch
new file mode 100644
index 00000000..3322abf0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0054-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch
@@ -0,0 +1,55 @@
1From 841c06ccc583055a42b0546efb5e6b448f26d5fd Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 12 Jan 2012 11:27:09 +0900
4Subject: [PATCH 54/69] usb: gadget: pch_udc: Reduce redundant interrupt
5
6commit 833310402c54ad9b676b465fc53ad276b13d36be upstream.
7
8ISSUE:
9USB Suspend interrupts occur frequently.
10
11CAUSE:
12When it is called pch_udc_reconnect() in USB Suspend, it repeats reset and
13Suspend.
14
15SOLUTION:
16pch_udc_reconnect() does not enable all interrupts. When an enumeration event
17occurred the driver enables all interrupts.
18
19Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
20Signed-off-by: Felipe Balbi <balbi@ti.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/usb/gadget/pch_udc.c | 9 ++++++---
24 1 file changed, 6 insertions(+), 3 deletions(-)
25
26diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
27index f232e65..870897ac 100644
28--- a/drivers/usb/gadget/pch_udc.c
29+++ b/drivers/usb/gadget/pch_udc.c
30@@ -568,9 +568,7 @@ static void pch_udc_reconnect(struct pch_udc_dev *dev)
31 /* enable device interrupts */
32 /* pch_udc_enable_interrupts() */
33 pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR,
34- UDC_DEVINT_UR | UDC_DEVINT_US |
35- UDC_DEVINT_ENUM |
36- UDC_DEVINT_SI | UDC_DEVINT_SC);
37+ UDC_DEVINT_UR | UDC_DEVINT_ENUM);
38
39 /* Clear the disconnect */
40 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES);
41@@ -2419,6 +2417,11 @@ static void pch_udc_svc_enum_interrupt(struct pch_udc_dev *dev)
42 pch_udc_set_dma(dev, DMA_DIR_TX);
43 pch_udc_set_dma(dev, DMA_DIR_RX);
44 pch_udc_ep_set_rrdy(&(dev->ep[UDC_EP0OUT_IDX]));
45+
46+ /* enable device interrupts */
47+ pch_udc_enable_interrupts(dev, UDC_DEVINT_UR | UDC_DEVINT_US |
48+ UDC_DEVINT_ES | UDC_DEVINT_ENUM |
49+ UDC_DEVINT_SI | UDC_DEVINT_SC);
50 }
51
52 /**
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch
new file mode 100644
index 00000000..996c5fd4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0055-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch
@@ -0,0 +1,82 @@
1From 0584e8b8127ffeb0de3d56313113727fab87aff5 Mon Sep 17 00:00:00 2001
2From: Lin Ming <ming.m.lin@intel.com>
3Date: Mon, 28 Nov 2011 09:46:02 +0800
4Subject: [PATCH 55/69] ACPICA: Fix to allow region arguments to reference
5 other scopes
6
7commit 8931d9ea78848b073bf299594f148b83abde4a5e upstream.
8
9Allow referenced objects to be in a different scope.
10
11http://www.acpica.org/bugzilla/show_bug.cgi?id=937
12http://marc.info/?l=linux-acpi&m=131636632718222&w=2
13
14ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359)
15ACPI Exception: AE_NOT_FOUND, Could not execute arguments for [RAMW] (Region) (20110112/nsinit-349)
16
17 Scope (_SB)
18 {
19 Name (RAMB, 0xDF5A1018)
20 OperationRegion (\RAMW, SystemMemory, RAMB, 0x00010000)
21 }
22
23For above ASL code, we need to save scope node(\_SB) to lookup
24the argument node(\_SB.RAMB).
25
26Reported-by: Jim Green <student.northwestern@gmail.com>
27Signed-off-by: Lin Ming <ming.m.lin@intel.com>
28Signed-off-by: Bob Moore <robert.moore@intel.com>
29Signed-off-by: Len Brown <len.brown@intel.com>
30Cc: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
31Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
32---
33 drivers/acpi/acpica/acobject.h | 1 +
34 drivers/acpi/acpica/dsargs.c | 2 +-
35 drivers/acpi/acpica/excreate.c | 6 ++++++
36 3 files changed, 8 insertions(+), 1 deletion(-)
37
38diff --git a/drivers/acpi/acpica/acobject.h b/drivers/acpi/acpica/acobject.h
39index 1055769..6d276c2 100644
40--- a/drivers/acpi/acpica/acobject.h
41+++ b/drivers/acpi/acpica/acobject.h
42@@ -358,6 +358,7 @@ typedef enum {
43 */
44 struct acpi_object_extra {
45 ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
46+ struct acpi_namespace_node *scope_node;
47 void *region_context; /* Region-specific data */
48 u8 *aml_start;
49 u32 aml_length;
50diff --git a/drivers/acpi/acpica/dsargs.c b/drivers/acpi/acpica/dsargs.c
51index 42163d8..d69e4a5 100644
52--- a/drivers/acpi/acpica/dsargs.c
53+++ b/drivers/acpi/acpica/dsargs.c
54@@ -384,7 +384,7 @@ acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *obj_desc)
55
56 /* Execute the argument AML */
57
58- status = acpi_ds_execute_arguments(node, node->parent,
59+ status = acpi_ds_execute_arguments(node, extra_desc->extra.scope_node,
60 extra_desc->extra.aml_length,
61 extra_desc->extra.aml_start);
62 if (ACPI_FAILURE(status)) {
63diff --git a/drivers/acpi/acpica/excreate.c b/drivers/acpi/acpica/excreate.c
64index 110711a..8a06dc5 100644
65--- a/drivers/acpi/acpica/excreate.c
66+++ b/drivers/acpi/acpica/excreate.c
67@@ -330,6 +330,12 @@ acpi_ex_create_region(u8 * aml_start,
68 region_obj2 = obj_desc->common.next_object;
69 region_obj2->extra.aml_start = aml_start;
70 region_obj2->extra.aml_length = aml_length;
71+ if (walk_state->scope_info) {
72+ region_obj2->extra.scope_node =
73+ walk_state->scope_info->scope.node;
74+ } else {
75+ region_obj2->extra.scope_node = node;
76+ }
77
78 /* Init the region from the operands */
79
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-security-fix-compile-error-in-commoncap.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-security-fix-compile-error-in-commoncap.c.patch
new file mode 100644
index 00000000..e40edbea
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0056-security-fix-compile-error-in-commoncap.c.patch
@@ -0,0 +1,37 @@
1From c44baf116ced749a5017ab4f36a808c4aad7c39c Mon Sep 17 00:00:00 2001
2From: Jonghwan Choi <jhbird.choi@samsung.com>
3Date: Wed, 18 Apr 2012 17:23:04 -0400
4Subject: [PATCH 56/69] security: fix compile error in commoncap.c
5
6commit 51b79bee627d526199b2f6a6bef8ee0c0739b6d1 upstream.
7
8Add missing "personality.h"
9security/commoncap.c: In function 'cap_bprm_set_creds':
10security/commoncap.c:510: error: 'PER_CLEAR_ON_SETID' undeclared (first use in this function)
11security/commoncap.c:510: error: (Each undeclared identifier is reported only once
12security/commoncap.c:510: error: for each function it appears in.)
13
14Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
15Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
16Signed-off-by: James Morris <james.l.morris@oracle.com>
17Cc: Eric Paris <eparis@redhat.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 security/commoncap.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/security/commoncap.c b/security/commoncap.c
24index 0aee106..12440ee 100644
25--- a/security/commoncap.c
26+++ b/security/commoncap.c
27@@ -28,6 +28,7 @@
28 #include <linux/prctl.h>
29 #include <linux/securebits.h>
30 #include <linux/user_namespace.h>
31+#include <linux/personality.h>
32
33 /*
34 * If a non-root user executes a setuid-root binary in
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch
new file mode 100644
index 00000000..0b69021b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0057-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch
@@ -0,0 +1,81 @@
1From 56bfb17ce9aba57b7bd205d7828d4f3d9935276e Mon Sep 17 00:00:00 2001
2From: Darren Hart <dvhart@linux.intel.com>
3Date: Mon, 16 Jan 2012 09:50:19 +0000
4Subject: [PATCH 57/69] pch_gbe: Do not abort probe on bad MAC
5
6commit 2b53d07891630dead46d65c8f896955fd3ae0302 upstream.
7
8If the MAC is invalid or not implemented, do not abort the probe. Issue
9a warning and prevent bringing the interface up until a MAC is set manually
10(via ifconfig $IFACE hw ether $MAC).
11
12Tested on two platforms, one with a valid MAC, the other without a MAC. The real
13MAC is used if present, the interface fails to come up until the MAC is set on
14the other. They successfully get an IP over DHCP and pass a simple ping and
15login over ssh test.
16
17This is meant to allow the Inforce SYS940X development board:
18http://www.inforcecomputing.com/SYS940X_ECX.html
19(and others suffering from a missing MAC) to work with the mainline kernel.
20Without this patch, the probe will fail and the interface will not be created,
21preventing the user from configuring the MAC manually.
22
23This does not make any attempt to address a missing or invalid MAC for the
24pch_phub driver.
25
26Signed-off-by: Darren Hart <dvhart@linux.intel.com>
27CC: Arjan van de Ven <arjan@linux.intel.com>
28CC: Alan Cox <alan@linux.intel.com>
29CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
30CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
31CC: "David S. Miller" <davem@davemloft.net>
32CC: Paul Gortmaker <paul.gortmaker@windriver.com>
33CC: Jon Mason <jdmason@kudzu.us>
34CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
35CC: David Laight <David.Laight@ACULAB.COM>
36CC: Joe Perches <joe@perches.com>
37Signed-off-by: David S. Miller <davem@davemloft.net>
38Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
39Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
40---
41 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 17 ++++++++++++++---
42 1 file changed, 14 insertions(+), 3 deletions(-)
43
44diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
45index 48406ca..43c7b25 100644
46--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
47+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
48@@ -1745,6 +1745,12 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter)
49 struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
50 int err;
51
52+ /* Ensure we have a valid MAC */
53+ if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
54+ pr_err("Error: Invalid MAC address\n");
55+ return -EINVAL;
56+ }
57+
58 /* hardware has been reset, we need to reload some things */
59 pch_gbe_set_multi(netdev);
60
61@@ -2467,9 +2473,14 @@ static int pch_gbe_probe(struct pci_dev *pdev,
62
63 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
64 if (!is_valid_ether_addr(netdev->dev_addr)) {
65- dev_err(&pdev->dev, "Invalid MAC Address\n");
66- ret = -EIO;
67- goto err_free_adapter;
68+ /*
69+ * If the MAC is invalid (or just missing), display a warning
70+ * but do not abort setting up the device. pch_gbe_up will
71+ * prevent the interface from being brought up until a valid MAC
72+ * is set.
73+ */
74+ dev_err(&pdev->dev, "Invalid MAC address, "
75+ "interface disabled.\n");
76 }
77 setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
78 (unsigned long)adapter);
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch
new file mode 100644
index 00000000..1c4d0da3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0058-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch
@@ -0,0 +1,56 @@
1From aa636350865960bf05da0427e6129a09787b9a8e Mon Sep 17 00:00:00 2001
2From: Dan Carpenter <dan.carpenter@oracle.com>
3Date: Wed, 29 Feb 2012 21:17:08 +0000
4Subject: [PATCH 58/69] pch_gbe: memory corruption calling
5 pch_gbe_validate_option()
6
7commit 73f98eab9b9e0bab492ca06add5657d9e702ddb1 upstream.
8
9pch_gbe_validate_option() modifies 32 bits of memory but we pass
10&hw->phy.autoneg_advertised which only has 16 bits and &hw->mac.fc
11which only has 8 bits.
12
13Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
14Signed-off-by: David S. Miller <davem@davemloft.net>
15Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 15 ++++++++-------
19 1 file changed, 8 insertions(+), 7 deletions(-)
20
21diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
22index 9cb5f91..29e23be 100644
23--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
24+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c
25@@ -321,10 +321,10 @@ static void pch_gbe_check_copper_options(struct pch_gbe_adapter *adapter)
26 pr_debug("AutoNeg specified along with Speed or Duplex, AutoNeg parameter ignored\n");
27 hw->phy.autoneg_advertised = opt.def;
28 } else {
29- hw->phy.autoneg_advertised = AutoNeg;
30- pch_gbe_validate_option(
31- (int *)(&hw->phy.autoneg_advertised),
32- &opt, adapter);
33+ int tmp = AutoNeg;
34+
35+ pch_gbe_validate_option(&tmp, &opt, adapter);
36+ hw->phy.autoneg_advertised = tmp;
37 }
38 }
39
40@@ -495,9 +495,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
41 .arg = { .l = { .nr = (int)ARRAY_SIZE(fc_list),
42 .p = fc_list } }
43 };
44- hw->mac.fc = FlowControl;
45- pch_gbe_validate_option((int *)(&hw->mac.fc),
46- &opt, adapter);
47+ int tmp = FlowControl;
48+
49+ pch_gbe_validate_option(&tmp, &opt, adapter);
50+ hw->mac.fc = tmp;
51 }
52
53 pch_gbe_check_copper_options(adapter);
54--
551.7.9.5
56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch
new file mode 100644
index 00000000..dd77d52e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0059-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch
@@ -0,0 +1,82 @@
1From b9ec954fcea6867cd78e33f003ce6c11a8c1b217 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Thu, 17 Nov 2011 16:14:23 +0900
4Subject: [PATCH 59/69] pch_dma: Support new device LAPIS Semiconductor ML7831
5 IOH
6
7commit ca7fe2db892dcf91b2c72ee352eda4ff867903a7 upstream.
8
9ML7831 is companion chip for Intel Atom E6xx series.
10
11Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
12Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/dma/Kconfig | 13 ++++++-------
16 drivers/dma/pch_dma.c | 8 ++++++--
17 2 files changed, 12 insertions(+), 9 deletions(-)
18
19diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
20index 5a99bb3..da85c0d 100644
21--- a/drivers/dma/Kconfig
22+++ b/drivers/dma/Kconfig
23@@ -201,18 +201,17 @@ config PL330_DMA
24 platform_data for a dma-pl330 device.
25
26 config PCH_DMA
27- tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223) DMA support"
28+ tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223/ML7831) DMA support"
29 depends on PCI && X86
30 select DMA_ENGINE
31 help
32 Enable support for Intel EG20T PCH DMA engine.
33-
34 This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
35- Output Hub), ML7213 and ML7223.
36- ML7213 IOH is for IVI(In-Vehicle Infotainment) use and ML7223 IOH is
37- for MP(Media Phone) use.
38- ML7213/ML7223 is companion chip for Intel Atom E6xx series.
39- ML7213/ML7223 is completely compatible for Intel EG20T PCH.
40+ Output Hub), ML7213, ML7223 and ML7831.
41+ ML7213 IOH is for IVI(In-Vehicle Infotainment) use, ML7223 IOH is
42+ for MP(Media Phone) use and ML7831 IOH is for general purpose use.
43+ ML7213/ML7223/ML7831 is companion chip for Intel Atom E6xx series.
44+ ML7213/ML7223/ML7831 is completely compatible for Intel EG20T PCH.
45
46 config IMX_SDMA
47 tristate "i.MX SDMA support"
48diff --git a/drivers/dma/pch_dma.c b/drivers/dma/pch_dma.c
49index a6d0e3d..629c430 100644
50--- a/drivers/dma/pch_dma.c
51+++ b/drivers/dma/pch_dma.c
52@@ -1018,6 +1018,8 @@ static void __devexit pch_dma_remove(struct pci_dev *pdev)
53 #define PCI_DEVICE_ID_ML7223_DMA2_4CH 0x800E
54 #define PCI_DEVICE_ID_ML7223_DMA3_4CH 0x8017
55 #define PCI_DEVICE_ID_ML7223_DMA4_4CH 0x803B
56+#define PCI_DEVICE_ID_ML7831_DMA1_8CH 0x8810
57+#define PCI_DEVICE_ID_ML7831_DMA2_4CH 0x8815
58
59 DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table) = {
60 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_EG20T_PCH_DMA_8CH), 8 },
61@@ -1030,6 +1032,8 @@ DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table) = {
62 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA2_4CH), 4}, /* Video SPI */
63 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA3_4CH), 4}, /* Security */
64 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA4_4CH), 4}, /* FPGA */
65+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA1_8CH), 8}, /* UART */
66+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA2_4CH), 4}, /* SPI */
67 { 0, },
68 };
69
70@@ -1057,7 +1061,7 @@ static void __exit pch_dma_exit(void)
71 module_init(pch_dma_init);
72 module_exit(pch_dma_exit);
73
74-MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICONDUCTOR ML7213 IOH "
75- "DMA controller driver");
76+MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICON ML7213/ML7223/ML7831 IOH"
77+ "DMA controller driver");
78 MODULE_AUTHOR("Yong Wang <yong.y.wang@intel.com>");
79 MODULE_LICENSE("GPL v2");
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-fix-Wuninitialized-warning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-fix-Wuninitialized-warning.patch
new file mode 100644
index 00000000..9b5bc86d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0060-spi-topcliff-pch-fix-Wuninitialized-warning.patch
@@ -0,0 +1,82 @@
1From 799b889232ef93a544b5b580bc8fb1178c27adbe Mon Sep 17 00:00:00 2001
2From: Danny Kukawka <danny.kukawka@bisect.de>
3Date: Tue, 14 Feb 2012 15:35:03 +0100
4Subject: [PATCH 60/69] spi-topcliff-pch: fix -Wuninitialized warning
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit de3bd7e6de25141c466773c2e0fa319b2fa93655 upstream.
10
11Fix for:
12drivers/spi/spi-topcliff-pch.c: In function ‘pch_spi_handler_sub’:
13drivers/spi/spi-topcliff-pch.c:325:17: warning: ‘bpw_len’ may be
14 used uninitialized in this function [-Wuninitialized]
15drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘rx_index’ may be
16 used uninitialized in this function [-Wuninitialized]
17drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘tx_index’ may be
18 used uninitialized in this function [-Wuninitialized]
19
20Move usage of tx_index, rx_index and bpw_len into the same
21block as where they are set to prevent uninitialized usage.
22
23v2: instead of init variables with 0 move the whole block
24
25[This patch title "warnings" makes you think "This patch is not
26for bug fix". However, this patch surely patch for bug fix.]
27
28Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
29Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
30Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
31Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
32---
33 drivers/spi/spi-topcliff-pch.c | 33 +++++++++++++++++----------------
34 1 file changed, 17 insertions(+), 16 deletions(-)
35
36diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
37index 027b6d0..ec50541 100644
38--- a/drivers/spi/spi-topcliff-pch.c
39+++ b/drivers/spi/spi-topcliff-pch.c
40@@ -315,22 +315,23 @@ static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
41 data->tx_index = tx_index;
42 data->rx_index = rx_index;
43
44- }
45-
46- /* if transfer complete interrupt */
47- if (reg_spsr_val & SPSR_FI_BIT) {
48- if ((tx_index == bpw_len) && (rx_index == tx_index)) {
49- /* disable interrupts */
50- pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL);
51-
52- /* transfer is completed;
53- inform pch_spi_process_messages */
54- data->transfer_complete = true;
55- data->transfer_active = false;
56- wake_up(&data->wait);
57- } else {
58- dev_err(&data->master->dev,
59- "%s : Transfer is not completed", __func__);
60+ /* if transfer complete interrupt */
61+ if (reg_spsr_val & SPSR_FI_BIT) {
62+ if ((tx_index == bpw_len) && (rx_index == tx_index)) {
63+ /* disable interrupts */
64+ pch_spi_setclr_reg(data->master, PCH_SPCR, 0,
65+ PCH_ALL);
66+
67+ /* transfer is completed;
68+ inform pch_spi_process_messages */
69+ data->transfer_complete = true;
70+ data->transfer_active = false;
71+ wake_up(&data->wait);
72+ } else {
73+ dev_err(&data->master->dev,
74+ "%s : Transfer is not completed",
75+ __func__);
76+ }
77 }
78 }
79 }
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch
new file mode 100644
index 00000000..0bef575b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0061-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch
@@ -0,0 +1,76 @@
1From 77fac631e9296a678208e031ca3b47a644a64bb8 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya-linux@dsn.lapis-semi.com>
3Date: Fri, 28 Oct 2011 09:35:21 +0900
4Subject: [PATCH 61/69] spi-topcliff-pch: Support new device LAPIS
5 Semiconductor ML7831 IOH
6
7commit 92b3a5c1bc3c7da1ae4675d014124f4a97ddb632 upstream.
8
9ML7831 is companion chip for Intel Atom E6xx series.
10
11Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.lapis-semi.com>
12Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
13Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/spi/Kconfig | 6 +++---
17 drivers/spi/spi-topcliff-pch.c | 5 ++++-
18 2 files changed, 7 insertions(+), 4 deletions(-)
19
20diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
21index 8ba4510..7587796 100644
22--- a/drivers/spi/Kconfig
23+++ b/drivers/spi/Kconfig
24@@ -346,14 +346,14 @@ config SPI_TI_SSP
25 serial port.
26
27 config SPI_TOPCLIFF_PCH
28- tristate "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH SPI controller"
29+ tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
30 depends on PCI
31 help
32 SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
33 used in some x86 embedded processors.
34
35- This driver also supports the ML7213, a companion chip for the
36- Atom E6xx series and compatible with the Intel EG20T PCH.
37+ This driver also supports the ML7213/ML7223/ML7831, a companion chip
38+ for the Atom E6xx series and compatible with the Intel EG20T PCH.
39
40 config SPI_TXX9
41 tristate "Toshiba TXx9 SPI controller"
42diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
43index ec50541..54b9d2e 100644
44--- a/drivers/spi/spi-topcliff-pch.c
45+++ b/drivers/spi/spi-topcliff-pch.c
46@@ -95,16 +95,18 @@
47 #define PCH_CLOCK_HZ 50000000
48 #define PCH_MAX_SPBR 1023
49
50-/* Definition for ML7213 by OKI SEMICONDUCTOR */
51+/* Definition for ML7213/ML7831 by OKI SEMICONDUCTOR */
52 #define PCI_VENDOR_ID_ROHM 0x10DB
53 #define PCI_DEVICE_ID_ML7213_SPI 0x802c
54 #define PCI_DEVICE_ID_ML7223_SPI 0x800F
55+#define PCI_DEVICE_ID_ML7831_SPI 0x8816
56
57 /*
58 * Set the number of SPI instance max
59 * Intel EG20T PCH : 1ch
60 * OKI SEMICONDUCTOR ML7213 IOH : 2ch
61 * OKI SEMICONDUCTOR ML7223 IOH : 1ch
62+ * OKI SEMICONDUCTOR ML7831 IOH : 1ch
63 */
64 #define PCH_SPI_MAX_DEV 2
65
66@@ -218,6 +220,7 @@ static struct pci_device_id pch_spi_pcidev_id[] = {
67 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_GE_SPI), 1, },
68 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7213_SPI), 2, },
69 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_SPI), 1, },
70+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_SPI), 1, },
71 { }
72 };
73
74--
751.7.9.5
76
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch
new file mode 100644
index 00000000..471914c1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0062-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch
@@ -0,0 +1,67 @@
1From efa82e03e24743425f4cb3d3632f29756b70d5b5 Mon Sep 17 00:00:00 2001
2From: Eran <eran@over-here.org>
3Date: Mon, 5 Dec 2011 22:15:29 +0000
4Subject: [PATCH 62/69] Bluetooth: Adding USB device 13d3:3375 as an Atheros
5 AR3012.
6
7commit 9498ba7a1d38d42eef4ef6d906ab1743c9f0fd6f upstream.
8
9The bluetooth module in the Asus UX31/UX21 is based on Atheros AR3012
10and requires a firmware to be uploaded before it's usable.
11
12output of usb-devices for this module:
13T: Bus=01 Lev=02 Prnt=02 Port=07 Cnt=03 Dev#= 6 Spd=12 MxCh= 0
14D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
15P: Vendor=13d3 ProdID=3375 Rev=00.02
16S: Manufacturer=Atheros Communications
17S: Product=Bluetooth USB Host Controller
18S: SerialNumber=Alaska Day 2006
19C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
20I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
21I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
22
23Signed-off-by: Eran <eran@over-here.org>
24Tested-by: Michal Labedzki <michal.labedzki@tieto.com>
25Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
26Cc: Jonathan Nieder <jrnieder@gmail.com>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/bluetooth/ath3k.c | 2 ++
30 drivers/bluetooth/btusb.c | 1 +
31 2 files changed, 3 insertions(+)
32
33diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
34index db811d2..67a79b0 100644
35--- a/drivers/bluetooth/ath3k.c
36+++ b/drivers/bluetooth/ath3k.c
37@@ -71,6 +71,7 @@ static struct usb_device_id ath3k_table[] = {
38
39 /* Atheros AR3012 with sflash firmware*/
40 { USB_DEVICE(0x0CF3, 0x3004) },
41+ { USB_DEVICE(0x13d3, 0x3375) },
42
43 /* Atheros AR5BBU12 with sflash firmware */
44 { USB_DEVICE(0x0489, 0xE02C) },
45@@ -87,6 +88,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
46
47 /* Atheros AR3012 with sflash firmware*/
48 { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
49+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
50
51 { } /* Terminating entry */
52 };
53diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
54index c16c750..df0331a 100644
55--- a/drivers/bluetooth/btusb.c
56+++ b/drivers/bluetooth/btusb.c
57@@ -126,6 +126,7 @@ static struct usb_device_id blacklist_table[] = {
58
59 /* Atheros 3012 with sflash firmware */
60 { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
61+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
62
63 /* Atheros AR5BBU12 with sflash firmware */
64 { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
65--
661.7.9.5
67
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch
new file mode 100644
index 00000000..4ae57d9b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0063-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch
@@ -0,0 +1,119 @@
1From cf0a0312929eb18f55e95db15f2129fd28a0adb3 Mon Sep 17 00:00:00 2001
2From: "Cho, Yu-Chen" <acho@suse.com>
3Date: Wed, 14 Mar 2012 22:01:21 +0200
4Subject: [PATCH 63/69] Bluetooth: Add Atheros maryann PIDVID support
5
6commit 07c0ea874d43c299d185948452945a361052b6e3 upstream.
7
8Add Atheros maryann 0cf3:311d PIDVID support
9This module is AR3012 Series.
10
11Include /sys/kernel/debug/usb/devices output here for reference
12
13before:
14T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
15D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
16P: Vendor=0cf3 ProdID=311d Rev= 0.01
17S: Manufacturer=Atheros Communications
18S: Product=Bluetooth USB Host Controller
19S: SerialNumber=Alaska Day 2006
20C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
21I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
22E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
23E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
24E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
25I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
26E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
27E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
28I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
29E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
30E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
31I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
32E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
33E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
34I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
35E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
36E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
37I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
38E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
39E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
40I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
41E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
42E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
43
44after:
45T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
46D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
47P: Vendor=0cf3 ProdID=311d Rev= 0.02
48S: Manufacturer=Atheros Communications
49S: Product=Bluetooth USB Host Controller
50S: SerialNumber=Alaska Day 2006
51C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
52I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
53E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
54E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
55E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
56I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
57E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
58E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
59I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
60E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
61E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
62I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
63E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
64E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
65I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
66E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
67E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
68I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
69E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
70E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
71I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
72E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
73E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
74
75Signed-off-by: Cho, Yu-Chen <acho@suse.com>
76cked-by: Marcel Holtmann <marcel@holtmann.org>
77Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
78Cc: Jonathan Nieder <jrnieder@gmail.com>
79Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
80---
81 drivers/bluetooth/ath3k.c | 2 ++
82 drivers/bluetooth/btusb.c | 1 +
83 2 files changed, 3 insertions(+)
84
85diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
86index 67a79b0..003cd8d 100644
87--- a/drivers/bluetooth/ath3k.c
88+++ b/drivers/bluetooth/ath3k.c
89@@ -71,6 +71,7 @@ static struct usb_device_id ath3k_table[] = {
90
91 /* Atheros AR3012 with sflash firmware*/
92 { USB_DEVICE(0x0CF3, 0x3004) },
93+ { USB_DEVICE(0x0CF3, 0x311D) },
94 { USB_DEVICE(0x13d3, 0x3375) },
95
96 /* Atheros AR5BBU12 with sflash firmware */
97@@ -88,6 +89,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
98
99 /* Atheros AR3012 with sflash firmware*/
100 { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
101+ { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
102 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
103
104 { } /* Terminating entry */
105diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
106index df0331a..5a87b2e 100644
107--- a/drivers/bluetooth/btusb.c
108+++ b/drivers/bluetooth/btusb.c
109@@ -126,6 +126,7 @@ static struct usb_device_id blacklist_table[] = {
110
111 /* Atheros 3012 with sflash firmware */
112 { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
113+ { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
114 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
115
116 /* Atheros AR5BBU12 with sflash firmware */
117--
1181.7.9.5
119
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch
new file mode 100644
index 00000000..85b6c137
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0064-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch
@@ -0,0 +1,45 @@
1From 876f46c3f8fe8b612d1892941785c52c3f1d0012 Mon Sep 17 00:00:00 2001
2From: Jesse Sung <jesse.sung@canonical.com>
3Date: Thu, 22 Dec 2011 10:48:47 +0800
4Subject: [PATCH 64/69] Bluetooth: Add support for BCM20702A0 [0a5c:21e3]
5
6commit c0190925dacd976a67044f4382d4effbed568dce upstream.
7
8Add another vendor specific ID for BCM20702A0.
9
10output of usb-devices:
11T: Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
12D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
13P: Vendor=0a5c ProdID=21e3 Rev=01.12
14S: Manufacturer=Broadcom Corp
15S: Product=BCM20702A0
16S: SerialNumber=9439E5CBF66C
17C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
18I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
19I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
20I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
21I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
22
23Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
24Acked-by: Marcel Holtmann <marcel@holtmann.org>
25Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 drivers/bluetooth/btusb.c | 1 +
29 1 file changed, 1 insertion(+)
30
31diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
32index 5a87b2e..db44ad5 100644
33--- a/drivers/bluetooth/btusb.c
34+++ b/drivers/bluetooth/btusb.c
35@@ -101,6 +101,7 @@ static struct usb_device_id btusb_table[] = {
36 { USB_DEVICE(0x0c10, 0x0000) },
37
38 /* Broadcom BCM20702A0 */
39+ { USB_DEVICE(0x0a5c, 0x21e3) },
40 { USB_DEVICE(0x413c, 0x8197) },
41
42 { } /* Terminating entry */
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch
new file mode 100644
index 00000000..d39ffb48
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0065-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch
@@ -0,0 +1,170 @@
1From 39bc94c8c5909dc1047dad45c14ba96ff54e5654 Mon Sep 17 00:00:00 2001
2From: Kees Cook <keescook@chromium.org>
3Date: Mon, 19 Mar 2012 16:12:53 -0700
4Subject: [PATCH 65/69] futex: Do not leak robust list to unprivileged process
5
6commit bdbb776f882f5ad431aa1e694c69c1c3d6a4a5b8 upstream.
7
8It was possible to extract the robust list head address from a setuid
9process if it had used set_robust_list(), allowing an ASLR info leak. This
10changes the permission checks to be the same as those used for similar
11info that comes out of /proc.
12
13Running a setuid program that uses robust futexes would have had:
14 cred->euid != pcred->euid
15 cred->euid == pcred->uid
16so the old permissions check would allow it. I'm not aware of any setuid
17programs that use robust futexes, so this is just a preventative measure.
18
19(This patch is based on changes from grsecurity.)
20
21Signed-off-by: Kees Cook <keescook@chromium.org>
22Cc: Darren Hart <dvhart@linux.intel.com>
23Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
24Cc: Jiri Kosina <jkosina@suse.cz>
25Cc: Eric W. Biederman <ebiederm@xmission.com>
26Cc: David Howells <dhowells@redhat.com>
27Cc: Serge E. Hallyn <serge.hallyn@canonical.com>
28Cc: kernel-hardening@lists.openwall.com
29Cc: spender@grsecurity.net
30Link: http://lkml.kernel.org/r/20120319231253.GA20893@www.outflux.net
31Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
32Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33---
34 kernel/futex.c | 36 +++++++++++++-----------------------
35 kernel/futex_compat.c | 36 +++++++++++++-----------------------
36 2 files changed, 26 insertions(+), 46 deletions(-)
37
38diff --git a/kernel/futex.c b/kernel/futex.c
39index 0677023..866c9d5 100644
40--- a/kernel/futex.c
41+++ b/kernel/futex.c
42@@ -59,6 +59,7 @@
43 #include <linux/magic.h>
44 #include <linux/pid.h>
45 #include <linux/nsproxy.h>
46+#include <linux/ptrace.h>
47
48 #include <asm/futex.h>
49
50@@ -2443,40 +2444,29 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
51 {
52 struct robust_list_head __user *head;
53 unsigned long ret;
54- const struct cred *cred = current_cred(), *pcred;
55+ struct task_struct *p;
56
57 if (!futex_cmpxchg_enabled)
58 return -ENOSYS;
59
60+ rcu_read_lock();
61+
62+ ret = -ESRCH;
63 if (!pid)
64- head = current->robust_list;
65+ p = current;
66 else {
67- struct task_struct *p;
68-
69- ret = -ESRCH;
70- rcu_read_lock();
71 p = find_task_by_vpid(pid);
72 if (!p)
73 goto err_unlock;
74- ret = -EPERM;
75- pcred = __task_cred(p);
76- /* If victim is in different user_ns, then uids are not
77- comparable, so we must have CAP_SYS_PTRACE */
78- if (cred->user->user_ns != pcred->user->user_ns) {
79- if (!ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
80- goto err_unlock;
81- goto ok;
82- }
83- /* If victim is in same user_ns, then uids are comparable */
84- if (cred->euid != pcred->euid &&
85- cred->euid != pcred->uid &&
86- !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
87- goto err_unlock;
88-ok:
89- head = p->robust_list;
90- rcu_read_unlock();
91 }
92
93+ ret = -EPERM;
94+ if (!ptrace_may_access(p, PTRACE_MODE_READ))
95+ goto err_unlock;
96+
97+ head = p->robust_list;
98+ rcu_read_unlock();
99+
100 if (put_user(sizeof(*head), len_ptr))
101 return -EFAULT;
102 return put_user(head, head_ptr);
103diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
104index 5f9e689..a9642d5 100644
105--- a/kernel/futex_compat.c
106+++ b/kernel/futex_compat.c
107@@ -10,6 +10,7 @@
108 #include <linux/compat.h>
109 #include <linux/nsproxy.h>
110 #include <linux/futex.h>
111+#include <linux/ptrace.h>
112
113 #include <asm/uaccess.h>
114
115@@ -136,40 +137,29 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
116 {
117 struct compat_robust_list_head __user *head;
118 unsigned long ret;
119- const struct cred *cred = current_cred(), *pcred;
120+ struct task_struct *p;
121
122 if (!futex_cmpxchg_enabled)
123 return -ENOSYS;
124
125+ rcu_read_lock();
126+
127+ ret = -ESRCH;
128 if (!pid)
129- head = current->compat_robust_list;
130+ p = current;
131 else {
132- struct task_struct *p;
133-
134- ret = -ESRCH;
135- rcu_read_lock();
136 p = find_task_by_vpid(pid);
137 if (!p)
138 goto err_unlock;
139- ret = -EPERM;
140- pcred = __task_cred(p);
141- /* If victim is in different user_ns, then uids are not
142- comparable, so we must have CAP_SYS_PTRACE */
143- if (cred->user->user_ns != pcred->user->user_ns) {
144- if (!ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
145- goto err_unlock;
146- goto ok;
147- }
148- /* If victim is in same user_ns, then uids are comparable */
149- if (cred->euid != pcred->euid &&
150- cred->euid != pcred->uid &&
151- !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
152- goto err_unlock;
153-ok:
154- head = p->compat_robust_list;
155- rcu_read_unlock();
156 }
157
158+ ret = -EPERM;
159+ if (!ptrace_may_access(p, PTRACE_MODE_READ))
160+ goto err_unlock;
161+
162+ head = p->compat_robust_list;
163+ rcu_read_unlock();
164+
165 if (put_user(sizeof(*head), len_ptr))
166 return -EFAULT;
167 return put_user(ptr_to_compat(head), head_ptr);
168--
1691.7.9.5
170
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch
new file mode 100644
index 00000000..78e16f86
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0066-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch
@@ -0,0 +1,39 @@
1From 8bfeb0bfde94ba70986c03d0a8ca9ab876073e35 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Wed, 18 Apr 2012 15:21:07 +0200
4Subject: [PATCH 66/69] drm/radeon/kms: fix the regression of DVI connector
5 check
6
7commit e36325071832f1ba96ac54fb8ba1459f08b05dd8 upstream.
8
9The check of the encoder type in the commit [e00e8b5e: drm/radeon/kms:
10fix analog load detection on DVI-I connectors] is obviously wrong, and
11it's the culprit of the regression on my workstation with DVI-analog
12connection resulting in the blank output.
13
14Fixed the typo now.
15
16Signed-off-by: Takashi Iwai <tiwai@suse.de>
17Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
18Signed-off-by: Dave Airlie <airlied@redhat.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/gpu/drm/radeon/radeon_connectors.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
25index f7d39ac..f19ea2e 100644
26--- a/drivers/gpu/drm/radeon/radeon_connectors.c
27+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
28@@ -946,7 +946,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
29
30 encoder = obj_to_encoder(obj);
31
32- if (encoder->encoder_type != DRM_MODE_ENCODER_DAC ||
33+ if (encoder->encoder_type != DRM_MODE_ENCODER_DAC &&
34 encoder->encoder_type != DRM_MODE_ENCODER_TVDAC)
35 continue;
36
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-disable-MSI-on-RV515.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-disable-MSI-on-RV515.patch
new file mode 100644
index 00000000..6bf86500
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0067-drm-radeon-disable-MSI-on-RV515.patch
@@ -0,0 +1,37 @@
1From 0532e1f8a710f011e839ad1ad0d83c6f3a1d2d74 Mon Sep 17 00:00:00 2001
2From: Dave Airlie <airlied@redhat.com>
3Date: Fri, 13 Apr 2012 11:14:50 +0100
4Subject: [PATCH 67/69] drm/radeon: disable MSI on RV515
5
6commit 16a5e32b83fd946312b9b13590c75d20c95c5202 upstream.
7
8My rv515 card is very flaky with msi enabled. Every so often it loses a rearm
9and never comes back, manually banging the rearm brings it back.
10
11Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
12Signed-off-by: Dave Airlie <airlied@redhat.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/gpu/drm/radeon/radeon_irq_kms.c | 6 ++++++
16 1 file changed, 6 insertions(+)
17
18diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
19index e7ddb49..baa019e 100644
20--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
21+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
22@@ -143,6 +143,12 @@ static bool radeon_msi_ok(struct radeon_device *rdev)
23 (rdev->pdev->subsystem_device == 0x01fd))
24 return true;
25
26+ /* RV515 seems to have MSI issues where it loses
27+ * MSI rearms occasionally. This leads to lockups and freezes.
28+ * disable it by default.
29+ */
30+ if (rdev->family == CHIP_RV515)
31+ return false;
32 if (rdev->flags & RADEON_IS_IGP) {
33 /* APUs work fine with MSIs */
34 if (rdev->family >= CHIP_PALM)
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch
new file mode 100644
index 00000000..ee262ca9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0068-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch
@@ -0,0 +1,46 @@
1From 29e2a67065f74d9a1f31a61d4466976551d9bed4 Mon Sep 17 00:00:00 2001
2From: Dave Airlie <airlied@redhat.com>
3Date: Thu, 19 Apr 2012 15:42:58 +0100
4Subject: [PATCH 68/69] drm/radeon: fix load detect on rn50 with hardcoded
5 EDIDs.
6
7commit a09d431f344d854e4fe9cfac44f78cb8202f3eb7 upstream.
8
9When the force changes went in back in 3.3.0, we ended up returning
10disconnected in the !force case, and the connected in when forced,
11as it hit the hardcoded check.
12
13Fix it so all exits go via the hardcoded check and stop spurious
14modesets on platforms with hardcoded EDIDs.
15
16Reported-by: Evan McNabb (Red Hat)
17Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
18Signed-off-by: Dave Airlie <airlied@redhat.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/gpu/drm/radeon/radeon_connectors.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
25index f19ea2e..4a4493f 100644
26--- a/drivers/gpu/drm/radeon/radeon_connectors.c
27+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
28@@ -976,6 +976,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
29 * cases the DVI port is actually a virtual KVM port connected to the service
30 * processor.
31 */
32+out:
33 if ((!rdev->is_atom_bios) &&
34 (ret == connector_status_disconnected) &&
35 rdev->mode_info.bios_hardcoded_edid_size) {
36@@ -983,7 +984,6 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
37 ret = connector_status_connected;
38 }
39
40-out:
41 /* updated in get modes as well since we need to know if it's analog or digital */
42 radeon_connector_update_scratch_regs(connector, ret);
43 return ret;
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0069-Linux-3.2.16.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0069-Linux-3.2.16.patch
new file mode 100644
index 00000000..261d3551
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.16/0069-Linux-3.2.16.patch
@@ -0,0 +1,24 @@
1From 206e830feaa561615d9ea721a7e4a0f8d3708e81 Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3Date: Sun, 22 Apr 2012 15:31:32 -0700
4Subject: [PATCH 69/69] Linux 3.2.16
5
6---
7 Makefile | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/Makefile b/Makefile
11index 6195122..3da29cb 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 15
18+SUBLEVEL = 16
19 EXTRAVERSION =
20 NAME = Saber-toothed Squirrel
21
22--
231.7.9.5
24
diff --git a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
index 35d1b268..70dd7be7 100644
--- a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
+++ b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
@@ -12,7 +12,7 @@ MULTI_CONFIG_BASE_SUFFIX = ""
12 12
13BRANCH = "v3.2-staging" 13BRANCH = "v3.2-staging"
14SRCREV = "0d0567b6c1a61a374120b985559768077c511a6d" 14SRCREV = "0d0567b6c1a61a374120b985559768077c511a6d"
15MACHINE_KERNEL_PR_append = "e+gitr${SRCREV}" 15MACHINE_KERNEL_PR_append = "a+gitr${SRCREV}"
16 16
17COMPATIBLE_MACHINE = "(ti33x)" 17COMPATIBLE_MACHINE = "(ti33x)"
18 18
@@ -796,6 +796,134 @@ PATCHES_OVER_PSP = " \
796 file://3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch \ 796 file://3.2.14/0145-serial-sh-sci-fix-a-race-of-DMA-submit_tx-on-transfe.patch \
797 file://3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch \ 797 file://3.2.14/0146-ASPM-Fix-pcie-devices-with-non-pcie-children.patch \
798 file://3.2.14/0147-Linux-3.2.14.patch \ 798 file://3.2.14/0147-Linux-3.2.14.patch \
799 file://3.2.15/0001-x86-bpf_jit-fix-a-bug-in-emitting-the-16-bit-immedia.patch \
800 file://3.2.15/0002-tg3-Fix-5717-serdes-powerdown-problem.patch \
801 file://3.2.15/0003-sky2-dont-overwrite-settings-for-PHY-Quick-link.patch \
802 file://3.2.15/0004-rose_dev-fix-memcpy-bug-in-rose_set_mac_address.patch \
803 file://3.2.15/0005-net-usb-cdc_eem-fix-mtu.patch \
804 file://3.2.15/0006-Fix-non-TBI-PHY-access-a-bad-merge-undid-bug-fix-in-.patch \
805 file://3.2.15/0007-ASoC-wm8994-Update-WM8994-DCS-calibration.patch \
806 file://3.2.15/0008-mtd-ixp4xx-oops-in-ixp4xx_flash_probe.patch \
807 file://3.2.15/0009-mtd-mips-lantiq-reintroduce-support-for-cmdline-part.patch \
808 file://3.2.15/0010-mtd-nand-gpmi-use-correct-member-for-checking-NAND_B.patch \
809 file://3.2.15/0011-mtd-sst25l-initialize-writebufsize.patch \
810 file://3.2.15/0012-mtd-block2mtd-initialize-writebufsize.patch \
811 file://3.2.15/0013-mtd-lart-initialize-writebufsize.patch \
812 file://3.2.15/0014-mtd-m25p80-set-writebufsize.patch \
813 file://3.2.15/0015-ACPI-Do-cpufreq-clamping-for-throttling-per-package-.patch \
814 file://3.2.15/0016-PNPACPI-Fix-device-ref-leaking-in-acpi_pnp_match.patch \
815 file://3.2.15/0017-ACPICA-Fix-regression-in-FADT-revision-checks.patch \
816 file://3.2.15/0018-modpost-fix-ALL_INIT_DATA_SECTIONS.patch \
817 file://3.2.15/0019-genirq-Adjust-irq-thread-affinity-on-IRQ_SET_MASK_OK.patch \
818 file://3.2.15/0020-tracing-Fix-ftrace-stack-trace-entries.patch \
819 file://3.2.15/0021-tracing-Fix-ent_size-in-trace-output.patch \
820 file://3.2.15/0022-m68k-mac-Add-missing-platform-check-before-registeri.patch \
821 file://3.2.15/0023-mac80211-fix-possible-tid_rx-reorder_timer-use-after.patch \
822 file://3.2.15/0024-rtlwifi-rtl8192ce-rtl8192cu-rtl8192de-Fix-low-gain-s.patch \
823 file://3.2.15/0025-drm-Validate-requested-virtual-size-against-allocate.patch \
824 file://3.2.15/0026-drm-radeon-kms-fix-fans-after-resume.patch \
825 file://3.2.15/0027-drm-i915-no-lvds-quirk-on-MSI-DC500.patch \
826 file://3.2.15/0028-drm-i915-Sanitize-BIOS-debugging-bits-from-PIPECONF.patch \
827 file://3.2.15/0029-drm-i915-Add-lock-on-drm_helper_resume_force_mode.patch \
828 file://3.2.15/0030-drm-i915-quirk-away-broken-OpRegion-VBT.patch \
829 file://3.2.15/0031-r8169-runtime-resume-before-shutdown.patch \
830 file://3.2.15/0032-target-Fix-unsupported-WRITE_SAME-sense-payload.patch \
831 file://3.2.15/0033-kgdb-debug_core-pass-the-breakpoint-struct-instead-o.patch \
832 file://3.2.15/0034-kgdbts-Fix-kernel-oops-with-CONFIG_DEBUG_RODATA.patch \
833 file://3.2.15/0035-kgdbts-1-of-2-fix-single-step-awareness-to-work-corr.patch \
834 file://3.2.15/0036-kgdbts-2-of-2-fix-single-step-awareness-to-work-corr.patch \
835 file://3.2.15/0037-x86-kgdb-Fix-DEBUG_RODATA-limitation-using-text_poke.patch \
836 file://3.2.15/0038-CIFS-Fix-VFS-lock-usage-for-oplocked-files.patch \
837 file://3.2.15/0039-ARM-tegra-remove-Tegra30-errata-from-MACH_TEGRA_DT.patch \
838 file://3.2.15/0040-mmc-sdhci-dove-Fix-compile-error-by-including-module.patch \
839 file://3.2.15/0041-mmc-atmel-mci-correct-data-timeout-computation.patch \
840 file://3.2.15/0042-tcm_fc-Add-abort-flag-for-gracefully-handling-exchan.patch \
841 file://3.2.15/0043-tcm_fc-Do-not-free-tpg-structure-during-wq-allocatio.patch \
842 file://3.2.15/0044-sysctl-fix-write-access-to-dmesg_restrict-kptr_restr.patch \
843 file://3.2.15/0045-modpost-Fix-modpost-license-checking-of-vmlinux.o.patch \
844 file://3.2.15/0046-x86-PCI-use-host-bridge-_CRS-info-on-MSI-MS-7253.patch \
845 file://3.2.15/0047-x86-PCI-do-not-tie-MSI-MS-7253-use_crs-quirk-to-BIOS.patch \
846 file://3.2.15/0048-TOMOYO-Fix-mount-flags-checking-order.patch \
847 file://3.2.15/0049-Revert-x86-ioapic-Add-register-level-checks-to-detec.patch \
848 file://3.2.15/0050-acer-wmi-No-wifi-rfkill-on-Sony-machines.patch \
849 file://3.2.15/0051-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch \
850 file://3.2.15/0052-sched-x86-Fix-overflow-in-cyc2ns_offset.patch \
851 file://3.2.15/0053-mfd-Clear-twl6030-IRQ-status-register-only-once.patch \
852 file://3.2.15/0054-USB-Add-Motorola-Rokr-E6-Id-to-the-USBNet-driver-zau.patch \
853 file://3.2.15/0055-ioat-fix-size-of-completion-for-Xen.patch \
854 file://3.2.15/0056-ASoC-ak4642-fixup-mute-needs-1-step.patch \
855 file://3.2.15/0057-cred-copy_process-should-clear-child-replacement_ses.patch \
856 file://3.2.15/0058-iommu-amd-Make-sure-IOMMU-interrupts-are-re-enabled-.patch \
857 file://3.2.15/0059-Bluetooth-Fix-l2cap-conn-failures-for-ssp-devices.patch \
858 file://3.2.15/0060-Linux-3.2.15.patch \
859 file://3.2.16/0001-drm-i915-mask-transcoder-select-bits-before-setting-.patch \
860 file://3.2.16/0002-drm-radeon-kms-fix-DVO-setup-on-some-r4xx-chips.patch \
861 file://3.2.16/0003-drm-i915-ringbuffer-Exclude-last-2-cachlines-of-ring.patch \
862 file://3.2.16/0004-drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-mod.patch \
863 file://3.2.16/0005-drm-i915-properly-compute-dp-dithering-for-user-crea.patch \
864 file://3.2.16/0006-drm-i915-make-rc6-module-parameter-read-only.patch \
865 file://3.2.16/0007-rtlwifi-Add-missing-DMA-buffer-unmapping-for-PCI-dri.patch \
866 file://3.2.16/0008-ARM-7379-1-DT-fix-atags_to_fdt-second-call-site.patch \
867 file://3.2.16/0009-ARM-7384-1-ThumbEE-Disable-userspace-TEEHBR-access-f.patch \
868 file://3.2.16/0010-md-bitmap-prevent-bitmap_daemon_work-running-while-i.patch \
869 file://3.2.16/0011-Bluetooth-uart-ldisc-Fix-memory-leak.patch \
870 file://3.2.16/0012-Bluetooth-hci_ldisc-fix-NULL-pointer-dereference-on-.patch \
871 file://3.2.16/0013-ext4-address-scalability-issue-by-removing-extent-ca.patch \
872 file://3.2.16/0014-ia64-fix-futex_atomic_cmpxchg_inatomic.patch \
873 file://3.2.16/0015-drivers-rtc-rtc-pl031.c-enable-clock-on-all-ST-varia.patch \
874 file://3.2.16/0016-hugetlb-fix-race-condition-in-hugetlb_fault.patch \
875 file://3.2.16/0017-staging-iio-hmc5843-Fix-crash-in-probe-function.patch \
876 file://3.2.16/0018-tty-serial-altera_uart-Check-for-NULL-platform_data-.patch \
877 file://3.2.16/0019-sparc64-Eliminate-obsolete-__handle_softirq-function.patch \
878 file://3.2.16/0020-sparc64-Fix-bootup-crash-on-sun4v.patch \
879 file://3.2.16/0021-cciss-Initialize-scsi-host-max_sectors-for-tape-driv.patch \
880 file://3.2.16/0022-cciss-Fix-scsi-tape-io-with-more-than-255-scatter-ga.patch \
881 file://3.2.16/0024-video-uvesafb-Fix-oops-that-uvesafb-try-to-execute-N.patch \
882 file://3.2.16/0025-nohz-Fix-stale-jiffies-update-in-tick_nohz_restart.patch \
883 file://3.2.16/0026-pch_uart-Fix-MSI-setting-issue.patch \
884 file://3.2.16/0027-USB-serial-fix-race-between-probe-and-open.patch \
885 file://3.2.16/0028-USB-pl2303-fix-DTR-RTS-being-raised-on-baud-rate-cha.patch \
886 file://3.2.16/0029-USB-option-re-add-NOVATELWIRELESS_PRODUCT_HSPA_HIGHS.patch \
887 file://3.2.16/0030-USB-ftdi_sio-fix-status-line-change-handling-for-TIO.patch \
888 file://3.2.16/0031-USB-ftdi_sio-fix-race-condition-in-TIOCMIWAIT-and-ab.patch \
889 file://3.2.16/0032-USB-sierra-add-support-for-Sierra-Wireless-MC7710.patch \
890 file://3.2.16/0033-USB-don-t-clear-urb-dev-in-scatter-gather-library.patch \
891 file://3.2.16/0034-USB-don-t-ignore-suspend-errors-for-root-hubs.patch \
892 file://3.2.16/0035-xhci-don-t-re-enable-IE-constantly.patch \
893 file://3.2.16/0036-xhci-Don-t-write-zeroed-pointers-to-xHC-registers.patch \
894 file://3.2.16/0037-xhci-Restore-event-ring-dequeue-pointer-on-resume.patch \
895 file://3.2.16/0038-USB-fix-bug-of-device-descriptor-got-from-superspeed.patch \
896 file://3.2.16/0039-xHCI-add-XHCI_RESET_ON_RESUME-quirk-for-VIA-xHCI-hos.patch \
897 file://3.2.16/0040-xHCI-Correct-the-define-XHCI_LEGACY_DISABLE_SMI.patch \
898 file://3.2.16/0041-fix-tlb-flushing-for-page-table-pages.patch \
899 file://3.2.16/0042-serial-PL011-clear-pending-interrupts.patch \
900 file://3.2.16/0043-serial-PL011-move-interrupt-clearing.patch \
901 file://3.2.16/0044-fcaps-clear-the-same-personality-flags-as-suid-when-.patch \
902 file://3.2.16/0045-ath9k-fix-max-noise-floor-threshold.patch \
903 file://3.2.16/0046-xhci-Fix-register-save-restore-order.patch \
904 file://3.2.16/0047-Bluetooth-hci_core-fix-NULL-pointer-dereference-at-u.patch \
905 file://3.2.16/0048-pch_gpio-Support-new-device-LAPIS-Semiconductor-ML78.patch \
906 file://3.2.16/0049-gpio-Add-missing-spin_lock_init-in-gpio-pch-driver.patch \
907 file://3.2.16/0050-usb-gadget-pch_udc-Fix-disconnect-issue.patch \
908 file://3.2.16/0051-usb-gadget-pch_udc-Fix-wrong-return-value.patch \
909 file://3.2.16/0052-usb-gadget-pch_udc-Fix-USB-suspend-issue.patch \
910 file://3.2.16/0053-usb-gadget-pch_udc-Fix-usb-gadget-pch_udc-Fix-ether-.patch \
911 file://3.2.16/0054-usb-gadget-pch_udc-Reduce-redundant-interrupt.patch \
912 file://3.2.16/0055-ACPICA-Fix-to-allow-region-arguments-to-reference-ot.patch \
913 file://3.2.16/0056-security-fix-compile-error-in-commoncap.c.patch \
914 file://3.2.16/0057-pch_gbe-Do-not-abort-probe-on-bad-MAC.patch \
915 file://3.2.16/0058-pch_gbe-memory-corruption-calling-pch_gbe_validate_o.patch \
916 file://3.2.16/0059-pch_dma-Support-new-device-LAPIS-Semiconductor-ML783.patch \
917 file://3.2.16/0060-spi-topcliff-pch-fix-Wuninitialized-warning.patch \
918 file://3.2.16/0061-spi-topcliff-pch-Support-new-device-LAPIS-Semiconduc.patch \
919 file://3.2.16/0062-Bluetooth-Adding-USB-device-13d3-3375-as-an-Atheros-.patch \
920 file://3.2.16/0063-Bluetooth-Add-Atheros-maryann-PIDVID-support.patch \
921 file://3.2.16/0064-Bluetooth-Add-support-for-BCM20702A0-0a5c-21e3.patch \
922 file://3.2.16/0065-futex-Do-not-leak-robust-list-to-unprivileged-proces.patch \
923 file://3.2.16/0066-drm-radeon-kms-fix-the-regression-of-DVI-connector-c.patch \
924 file://3.2.16/0067-drm-radeon-disable-MSI-on-RV515.patch \
925 file://3.2.16/0068-drm-radeon-fix-load-detect-on-rn50-with-hardcoded-ED.patch \
926 file://3.2.16/0069-Linux-3.2.16.patch \
799 file://beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch \ 927 file://beaglebone/0001-f_rndis-HACK-around-undefined-variables.patch \
800 file://beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch \ 928 file://beaglebone/0002-da8xx-fb-add-DVI-support-for-beaglebone.patch \
801 file://beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch \ 929 file://beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch \
@@ -829,4 +957,3 @@ PATCHES_OVER_PSP = " \
829 file://beaglebone/0031-omap2-irq-process-all-4-irq-banks-for-am335x.patch \ 957 file://beaglebone/0031-omap2-irq-process-all-4-irq-banks-for-am335x.patch \
830 file://beaglebone/0032-omap2-irqs.h-increase-number-or-irq-banks.patch \ 958 file://beaglebone/0032-omap2-irqs.h-increase-number-or-irq-banks.patch \
831" 959"
832