summaryrefslogtreecommitdiffstats
path: root/recipes-kernel
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2012-06-20 12:42:22 +0200
committerDenys Dmytriyenko <denys@ti.com>2012-07-31 15:45:32 -0400
commit646ff9d602da5053496ace4a0f9fcf1f7b5fae70 (patch)
treec8f49c988d7b100f11f17413fa95eb6f0fc00512 /recipes-kernel
parent7f25f16c99036ada0137d789a1b3d2f0f5e8a126 (diff)
downloadmeta-ti-646ff9d602da5053496ace4a0f9fcf1f7b5fae70.tar.gz
linux-ti33x-psp 3.2: update to 3.2.21, add libertas fixes
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Diffstat (limited to 'recipes-kernel')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch79
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch110
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch83
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch65
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch61
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch98
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch91
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch31
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch77
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch86
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch87
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch69
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch109
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch100
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch102
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch77
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch129
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch74
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch132
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch59
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch107
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch123
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch100
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch99
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch31
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch90
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch50
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch157
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch136
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch123
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch88
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch73
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch1651
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch69
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch73
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch8
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch6
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch2
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch68
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch152
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch141
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch61
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch210
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch78
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch97
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch142
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch84
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch69
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch92
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch65
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch101
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch86
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch84
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch79
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch31
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch64
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch65
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch71
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch94
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch92
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch110
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch181
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch113
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch82
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch138
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch88
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch100
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch188
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch84
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch49
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch76
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch158
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch166
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch93
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch103
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch146
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch65
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch85
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch73
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch50
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch80
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch174
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch170
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch70
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch98
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch39
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch88
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch93
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch68
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch29
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch81
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch94
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch179
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch162
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch89
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch94
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch88
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch102
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch121
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch80
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch26
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch54
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch80
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch95
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch618
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch269
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch320
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch201
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch154
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch30
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch66
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp_3.2.bb292
418 files changed, 21741 insertions, 356 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch
new file mode 100644
index 00000000..dff41fc5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch
@@ -0,0 +1,79 @@
1From e29e69cb6dff635429cbda9a9548c3d0390689f9 Mon Sep 17 00:00:00 2001
2From: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
3Date: Fri, 10 Feb 2012 15:28:31 +0900
4Subject: [PATCH 001/117] KVM: mmu_notifier: Flush TLBs before releasing
5 mmu_lock
6
7(cherry picked from commit 565f3be2174611f364405bbea2d86e153c2e7e78
8
9Other threads may process the same page in that small window and skip
10TLB flush and then return before these functions do flush.
11
12Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
13Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
14Signed-off-by: Avi Kivity <avi@redhat.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 virt/kvm/kvm_main.c | 19 ++++++++++---------
18 1 file changed, 10 insertions(+), 9 deletions(-)
19
20diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
21index e401c1b..9ffac2e 100644
22--- a/virt/kvm/kvm_main.c
23+++ b/virt/kvm/kvm_main.c
24@@ -289,15 +289,15 @@ static void kvm_mmu_notifier_invalidate_page(struct mmu_notifier *mn,
25 */
26 idx = srcu_read_lock(&kvm->srcu);
27 spin_lock(&kvm->mmu_lock);
28+
29 kvm->mmu_notifier_seq++;
30 need_tlb_flush = kvm_unmap_hva(kvm, address) | kvm->tlbs_dirty;
31- spin_unlock(&kvm->mmu_lock);
32- srcu_read_unlock(&kvm->srcu, idx);
33-
34 /* we've to flush the tlb before the pages can be freed */
35 if (need_tlb_flush)
36 kvm_flush_remote_tlbs(kvm);
37
38+ spin_unlock(&kvm->mmu_lock);
39+ srcu_read_unlock(&kvm->srcu, idx);
40 }
41
42 static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
43@@ -335,12 +335,12 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
44 for (; start < end; start += PAGE_SIZE)
45 need_tlb_flush |= kvm_unmap_hva(kvm, start);
46 need_tlb_flush |= kvm->tlbs_dirty;
47- spin_unlock(&kvm->mmu_lock);
48- srcu_read_unlock(&kvm->srcu, idx);
49-
50 /* we've to flush the tlb before the pages can be freed */
51 if (need_tlb_flush)
52 kvm_flush_remote_tlbs(kvm);
53+
54+ spin_unlock(&kvm->mmu_lock);
55+ srcu_read_unlock(&kvm->srcu, idx);
56 }
57
58 static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
59@@ -378,13 +378,14 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn,
60
61 idx = srcu_read_lock(&kvm->srcu);
62 spin_lock(&kvm->mmu_lock);
63- young = kvm_age_hva(kvm, address);
64- spin_unlock(&kvm->mmu_lock);
65- srcu_read_unlock(&kvm->srcu, idx);
66
67+ young = kvm_age_hva(kvm, address);
68 if (young)
69 kvm_flush_remote_tlbs(kvm);
70
71+ spin_unlock(&kvm->mmu_lock);
72+ srcu_read_unlock(&kvm->srcu, idx);
73+
74 return young;
75 }
76
77--
781.7.9.5
79
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch
new file mode 100644
index 00000000..801ab456
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch
@@ -0,0 +1,110 @@
1From 54719e9d5196e2af1e358795de9face038502343 Mon Sep 17 00:00:00 2001
2From: Avi Kivity <avi@redhat.com>
3Date: Mon, 5 Mar 2012 14:23:29 +0200
4Subject: [PATCH 002/117] KVM: Ensure all vcpus are consistent with in-kernel
5 irqchip settings
6
7(cherry picked from commit 3e515705a1f46beb1c942bb8043c16f8ac7b1e9e)
8
9If some vcpus are created before KVM_CREATE_IRQCHIP, then
10irqchip_in_kernel() and vcpu->arch.apic will be inconsistent, leading
11to potential NULL pointer dereferences.
12
13Fix by:
14- ensuring that no vcpus are installed when KVM_CREATE_IRQCHIP is called
15- ensuring that a vcpu has an apic if it is installed after KVM_CREATE_IRQCHIP
16
17This is somewhat long winded because vcpu->arch.apic is created without
18kvm->lock held.
19
20Based on earlier patch by Michael Ellerman.
21
22Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
23Signed-off-by: Avi Kivity <avi@redhat.com>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 arch/ia64/kvm/kvm-ia64.c | 5 +++++
28 arch/x86/kvm/x86.c | 8 ++++++++
29 include/linux/kvm_host.h | 7 +++++++
30 virt/kvm/kvm_main.c | 4 ++++
31 4 files changed, 24 insertions(+)
32
33diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
34index 43f4c92..7073185 100644
35--- a/arch/ia64/kvm/kvm-ia64.c
36+++ b/arch/ia64/kvm/kvm-ia64.c
37@@ -1169,6 +1169,11 @@ out:
38
39 #define PALE_RESET_ENTRY 0x80000000ffffffb0UL
40
41+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu)
42+{
43+ return irqchip_in_kernel(vcpu->kcm) == (vcpu->arch.apic != NULL);
44+}
45+
46 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
47 {
48 struct kvm_vcpu *v;
49diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
50index e04cae1..4fc5323 100644
51--- a/arch/x86/kvm/x86.c
52+++ b/arch/x86/kvm/x86.c
53@@ -3579,6 +3579,9 @@ long kvm_arch_vm_ioctl(struct file *filp,
54 r = -EEXIST;
55 if (kvm->arch.vpic)
56 goto create_irqchip_unlock;
57+ r = -EINVAL;
58+ if (atomic_read(&kvm->online_vcpus))
59+ goto create_irqchip_unlock;
60 r = -ENOMEM;
61 vpic = kvm_create_pic(kvm);
62 if (vpic) {
63@@ -6486,6 +6489,11 @@ void kvm_arch_check_processor_compat(void *rtn)
64 kvm_x86_ops->check_processor_compatibility(rtn);
65 }
66
67+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu)
68+{
69+ return irqchip_in_kernel(vcpu->kvm) == (vcpu->arch.apic != NULL);
70+}
71+
72 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
73 {
74 struct page *page;
75diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
76index 35410ef..6136821 100644
77--- a/include/linux/kvm_host.h
78+++ b/include/linux/kvm_host.h
79@@ -744,6 +744,13 @@ static inline bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu)
80 {
81 return vcpu->kvm->bsp_vcpu_id == vcpu->vcpu_id;
82 }
83+
84+bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu);
85+
86+#else
87+
88+static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; }
89+
90 #endif
91
92 #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
93diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
94index 9ffac2e..ec747dc 100644
95--- a/virt/kvm/kvm_main.c
96+++ b/virt/kvm/kvm_main.c
97@@ -1667,6 +1667,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
98 goto vcpu_destroy;
99
100 mutex_lock(&kvm->lock);
101+ if (!kvm_vcpu_compatible(vcpu)) {
102+ r = -EINVAL;
103+ goto unlock_vcpu_destroy;
104+ }
105 if (atomic_read(&kvm->online_vcpus) == KVM_MAX_VCPUS) {
106 r = -EINVAL;
107 goto unlock_vcpu_destroy;
108--
1091.7.9.5
110
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch
new file mode 100644
index 00000000..12c9a1ea
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch
@@ -0,0 +1,83 @@
1From 2464830dde6595631a26a5178946f8d8d0ac974f Mon Sep 17 00:00:00 2001
2From: Alex Williamson <alex.williamson@redhat.com>
3Date: Tue, 17 Apr 2012 21:46:44 -0600
4Subject: [PATCH 003/117] KVM: lock slots_lock around device assignment
5
6(cherry picked from commit 21a1416a1c945c5aeaeaf791b63c64926018eb77)
7
8As pointed out by Jason Baron, when assigning a device to a guest
9we first set the iommu domain pointer, which enables mapping
10and unmapping of memory slots to the iommu. This leaves a window
11where this path is enabled, but we haven't synchronized the iommu
12mappings to the existing memory slots. Thus a slot being removed
13at that point could send us down unexpected code paths removing
14non-existent pinnings and iommu mappings. Take the slots_lock
15around creating the iommu domain and initial mappings as well as
16around iommu teardown to avoid this race.
17
18Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
19Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 virt/kvm/iommu.c | 23 +++++++++++++++--------
24 1 file changed, 15 insertions(+), 8 deletions(-)
25
26diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
27index fd817a2..533db33 100644
28--- a/virt/kvm/iommu.c
29+++ b/virt/kvm/iommu.c
30@@ -239,9 +239,13 @@ int kvm_iommu_map_guest(struct kvm *kvm)
31 return -ENODEV;
32 }
33
34+ mutex_lock(&kvm->slots_lock);
35+
36 kvm->arch.iommu_domain = iommu_domain_alloc(&pci_bus_type);
37- if (!kvm->arch.iommu_domain)
38- return -ENOMEM;
39+ if (!kvm->arch.iommu_domain) {
40+ r = -ENOMEM;
41+ goto out_unlock;
42+ }
43
44 if (!allow_unsafe_assigned_interrupts &&
45 !iommu_domain_has_cap(kvm->arch.iommu_domain,
46@@ -252,17 +256,16 @@ int kvm_iommu_map_guest(struct kvm *kvm)
47 " module option.\n", __func__);
48 iommu_domain_free(kvm->arch.iommu_domain);
49 kvm->arch.iommu_domain = NULL;
50- return -EPERM;
51+ r = -EPERM;
52+ goto out_unlock;
53 }
54
55 r = kvm_iommu_map_memslots(kvm);
56 if (r)
57- goto out_unmap;
58-
59- return 0;
60+ kvm_iommu_unmap_memslots(kvm);
61
62-out_unmap:
63- kvm_iommu_unmap_memslots(kvm);
64+out_unlock:
65+ mutex_unlock(&kvm->slots_lock);
66 return r;
67 }
68
69@@ -338,7 +341,11 @@ int kvm_iommu_unmap_guest(struct kvm *kvm)
70 if (!domain)
71 return 0;
72
73+ mutex_lock(&kvm->slots_lock);
74 kvm_iommu_unmap_memslots(kvm);
75+ kvm->arch.iommu_domain = NULL;
76+ mutex_unlock(&kvm->slots_lock);
77+
78 iommu_domain_free(domain);
79 return 0;
80 }
81--
821.7.9.5
83
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch
new file mode 100644
index 00000000..34538bde
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch
@@ -0,0 +1,36 @@
1From c997d0a009e5eb7b372287c13fc9eaba901533e8 Mon Sep 17 00:00:00 2001
2From: Nadav Har'El <nyh@math.technion.ac.il>
3Date: Tue, 6 Mar 2012 16:39:22 +0200
4Subject: [PATCH 004/117] KVM: nVMX: Fix erroneous exception bitmap check
5
6(cherry picked from commit 9587190107d0c0cbaccbf7bf6b0245d29095a9ae)
7
8The code which checks whether to inject a pagefault to L1 or L2 (in
9nested VMX) was wrong, incorrect in how it checked the PF_VECTOR bit.
10Thanks to Dan Carpenter for spotting this.
11
12Signed-off-by: Nadav Har'El <nyh@il.ibm.com>
13Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
14Signed-off-by: Avi Kivity <avi@redhat.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/x86/kvm/vmx.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
22index 4ea7678..7ac5993 100644
23--- a/arch/x86/kvm/vmx.c
24+++ b/arch/x86/kvm/vmx.c
25@@ -1677,7 +1677,7 @@ static int nested_pf_handled(struct kvm_vcpu *vcpu)
26 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
27
28 /* TODO: also check PFEC_MATCH/MASK, not just EB.PF. */
29- if (!(vmcs12->exception_bitmap & PF_VECTOR))
30+ if (!(vmcs12->exception_bitmap & (1u << PF_VECTOR)))
31 return 0;
32
33 nested_vmx_vmexit(vcpu);
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch
new file mode 100644
index 00000000..6a3536f1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch
@@ -0,0 +1,35 @@
1From 6d02e81e40e77ff4e0d65ae89cf91a7402d3255f Mon Sep 17 00:00:00 2001
2From: Marcelo Tosatti <mtosatti@redhat.com>
3Date: Tue, 27 Mar 2012 19:47:26 -0300
4Subject: [PATCH 005/117] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked
5
6(cherry picked from commit 7a4f5ad051e02139a9f1c0f7f4b1acb88915852b)
7
8vmx_set_cr0 is called from vcpu run context, therefore it expects
9kvm->srcu to be held (for setting up the real-mode TSS).
10
11Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
12Signed-off-by: Avi Kivity <avi@redhat.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 arch/x86/kvm/vmx.c | 2 ++
17 1 file changed, 2 insertions(+)
18
19diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
20index 7ac5993..7315488 100644
21--- a/arch/x86/kvm/vmx.c
22+++ b/arch/x86/kvm/vmx.c
23@@ -3915,7 +3915,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
24 vmcs_write16(VIRTUAL_PROCESSOR_ID, vmx->vpid);
25
26 vmx->vcpu.arch.cr0 = X86_CR0_NW | X86_CR0_CD | X86_CR0_ET;
27+ vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
28 vmx_set_cr0(&vmx->vcpu, kvm_read_cr0(vcpu)); /* enter rmode */
29+ srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
30 vmx_set_cr4(&vmx->vcpu, 0);
31 vmx_set_efer(&vmx->vcpu, 0);
32 vmx_fpu_activate(&vmx->vcpu);
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch
new file mode 100644
index 00000000..f47e28d2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch
@@ -0,0 +1,65 @@
1From 4ec77e205d0abcfd9d48332ac0a8d60322966562 Mon Sep 17 00:00:00 2001
2From: Jens Freimann <jfrei@linux.vnet.ibm.com>
3Date: Mon, 6 Feb 2012 10:59:03 +0100
4Subject: [PATCH 006/117] KVM: s390: do store status after handling
5 STOP_ON_STOP bit
6
7(cherry picked from commit 9e0d5473e2f0ba2d2fe9dab9408edef3060b710e)
8
9In handle_stop() handle the stop bit before doing the store status as
10described for "Stop and Store Status" in the Principles of Operation.
11We have to give up the local_int.lock before calling kvm store status
12since it calls gmap_fault() which might sleep. Since local_int.lock
13only protects local_int.* and not guest memory we can give up the lock.
14
15Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
16Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
17Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
18Signed-off-by: Avi Kivity <avi@redhat.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 arch/s390/kvm/intercept.c | 20 ++++++++++++--------
23 1 file changed, 12 insertions(+), 8 deletions(-)
24
25diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
26index 0243454..a5f6eff 100644
27--- a/arch/s390/kvm/intercept.c
28+++ b/arch/s390/kvm/intercept.c
29@@ -133,13 +133,6 @@ static int handle_stop(struct kvm_vcpu *vcpu)
30
31 vcpu->stat.exit_stop_request++;
32 spin_lock_bh(&vcpu->arch.local_int.lock);
33- if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) {
34- vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP;
35- rc = kvm_s390_vcpu_store_status(vcpu,
36- KVM_S390_STORE_STATUS_NOADDR);
37- if (rc >= 0)
38- rc = -EOPNOTSUPP;
39- }
40
41 if (vcpu->arch.local_int.action_bits & ACTION_RELOADVCPU_ON_STOP) {
42 vcpu->arch.local_int.action_bits &= ~ACTION_RELOADVCPU_ON_STOP;
43@@ -155,7 +148,18 @@ static int handle_stop(struct kvm_vcpu *vcpu)
44 rc = -EOPNOTSUPP;
45 }
46
47- spin_unlock_bh(&vcpu->arch.local_int.lock);
48+ if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) {
49+ vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP;
50+ /* store status must be called unlocked. Since local_int.lock
51+ * only protects local_int.* and not guest memory we can give
52+ * up the lock here */
53+ spin_unlock_bh(&vcpu->arch.local_int.lock);
54+ rc = kvm_s390_vcpu_store_status(vcpu,
55+ KVM_S390_STORE_STATUS_NOADDR);
56+ if (rc >= 0)
57+ rc = -EOPNOTSUPP;
58+ } else
59+ spin_unlock_bh(&vcpu->arch.local_int.lock);
60 return rc;
61 }
62
63--
641.7.9.5
65
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch
new file mode 100644
index 00000000..cd494d67
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch
@@ -0,0 +1,36 @@
1From 12632a351defb18140a84df1720a363d94991973 Mon Sep 17 00:00:00 2001
2From: Christian Borntraeger <borntraeger@de.ibm.com>
3Date: Mon, 6 Feb 2012 10:59:02 +0100
4Subject: [PATCH 007/117] KVM: s390: Sanitize fpc registers for KVM_SET_FPU
5
6(cherry picked from commit 851755871c1f3184f4124c466e85881f17fa3226)
7
8commit 7eef87dc99e419b1cc051e4417c37e4744d7b661 (KVM: s390: fix
9register setting) added a load of the floating point control register
10to the KVM_SET_FPU path. Lets make sure that the fpc is valid.
11
12Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
13Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
14Signed-off-by: Avi Kivity <avi@redhat.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/s390/kvm/kvm-s390.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
22index d1c44573..d3cb86c 100644
23--- a/arch/s390/kvm/kvm-s390.c
24+++ b/arch/s390/kvm/kvm-s390.c
25@@ -418,7 +418,7 @@ int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu,
26 int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
27 {
28 memcpy(&vcpu->arch.guest_fpregs.fprs, &fpu->fprs, sizeof(fpu->fprs));
29- vcpu->arch.guest_fpregs.fpc = fpu->fpc;
30+ vcpu->arch.guest_fpregs.fpc = fpu->fpc & FPC_VALID_MASK;
31 restore_fp_regs(&vcpu->arch.guest_fpregs);
32 return 0;
33 }
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch
new file mode 100644
index 00000000..d0b79e02
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch
@@ -0,0 +1,61 @@
1From ac72e8c98ddb0c511b506472d9bc5afcf720babc Mon Sep 17 00:00:00 2001
2From: Kent Overstreet <kent.overstreet@gmail.com>
3Date: Wed, 8 Feb 2012 22:07:18 +0100
4Subject: [PATCH 008/117] bio: don't overflow in bio_get_nr_vecs()
5
6commit 5abebfdd02450fa1349daacf242e70b3736581e3 upstream.
7
8There were two places bio_get_nr_vecs() could overflow:
9
10First, it did a left shift to convert from sectors to bytes immediately
11before dividing by PAGE_SIZE. If PAGE_SIZE ever was less than 512 a great
12many things would break, so dividing by PAGE_SIZE >> 9 is safe and will
13generate smaller code too.
14
15The nastier overflow was in the DIV_ROUND_UP() (that's what the code was
16effectively doing, anyways). If n + d overflowed, the whole thing would
17return 0 which breaks things rather effectively.
18
19bio_get_nr_vecs() doesn't claim to give an exact value anyways, so the
20DIV_ROUND_UP() is silly; we could do a straight divide except if a
21device's queue_max_sectors was less than PAGE_SIZE we'd return 0. So we
22just add 1; this should always be safe - things will break badly if
23bio_get_nr_vecs() returns > BIO_MAX_PAGES (bio_alloc() will suddenly start
24failing) but it's queue_max_segments that must guard against this, if
25queue_max_sectors is preventing this from happen things are going to
26explode on architectures with different PAGE_SIZE.
27
28Signed-off-by: Kent Overstreet <koverstreet@google.com>
29Cc: Tejun Heo <tj@kernel.org>
30Acked-by: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
31Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32Signed-off-by: Jens Axboe <axboe@kernel.dk>
33Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
34---
35 fs/bio.c | 10 +++-------
36 1 file changed, 3 insertions(+), 7 deletions(-)
37
38diff --git a/fs/bio.c b/fs/bio.c
39index b1fe82c..b980ecd 100644
40--- a/fs/bio.c
41+++ b/fs/bio.c
42@@ -505,13 +505,9 @@ EXPORT_SYMBOL(bio_clone);
43 int bio_get_nr_vecs(struct block_device *bdev)
44 {
45 struct request_queue *q = bdev_get_queue(bdev);
46- int nr_pages;
47-
48- nr_pages = ((queue_max_sectors(q) << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
49- if (nr_pages > queue_max_segments(q))
50- nr_pages = queue_max_segments(q);
51-
52- return nr_pages;
53+ return min_t(unsigned,
54+ queue_max_segments(q),
55+ queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1);
56 }
57 EXPORT_SYMBOL(bio_get_nr_vecs);
58
59--
601.7.9.5
61
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch
new file mode 100644
index 00000000..1be88750
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch
@@ -0,0 +1,49 @@
1From a98c14f6d0a745c09fa0ebf22c2ce8913c211d9b Mon Sep 17 00:00:00 2001
2From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
3Date: Fri, 11 May 2012 16:36:44 +0200
4Subject: [PATCH 009/117] bio allocation failure due to bio_get_nr_vecs()
5
6commit f908ee9463b09ddd05e1c1a0111132212dc05fac upstream.
7
8The number of bio_get_nr_vecs() is passed down via bio_alloc() to
9bvec_alloc_bs(), which fails the bio allocation if
10nr_iovecs > BIO_MAX_PAGES. For the underlying caller this causes an
11unexpected bio allocation failure.
12Limiting to queue_max_segments() is not sufficient, as max_segments
13also might be very large.
14
15bvec_alloc_bs(gfp_mask, nr_iovecs, ) => NULL when nr_iovecs > BIO_MAX_PAGES
16bio_alloc_bioset(gfp_mask, nr_iovecs, ...)
17bio_alloc(GFP_NOIO, nvecs)
18xfs_alloc_ioend_bio()
19
20Signed-off-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
21Signed-off-by: Jens Axboe <axboe@kernel.dk>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 fs/bio.c | 7 ++++++-
25 1 file changed, 6 insertions(+), 1 deletion(-)
26
27diff --git a/fs/bio.c b/fs/bio.c
28index b980ecd..4fc4dbb 100644
29--- a/fs/bio.c
30+++ b/fs/bio.c
31@@ -505,9 +505,14 @@ EXPORT_SYMBOL(bio_clone);
32 int bio_get_nr_vecs(struct block_device *bdev)
33 {
34 struct request_queue *q = bdev_get_queue(bdev);
35- return min_t(unsigned,
36+ int nr_pages;
37+
38+ nr_pages = min_t(unsigned,
39 queue_max_segments(q),
40 queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1);
41+
42+ return min_t(unsigned, nr_pages, BIO_MAX_PAGES);
43+
44 }
45 EXPORT_SYMBOL(bio_get_nr_vecs);
46
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch
new file mode 100644
index 00000000..65aff340
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch
@@ -0,0 +1,98 @@
1From 6a6f5fba154e1400185844d74b953fba440fda63 Mon Sep 17 00:00:00 2001
2From: Tejun Heo <tj@kernel.org>
3Date: Tue, 15 May 2012 08:22:04 +0200
4Subject: [PATCH 010/117] block: fix buffer overflow when printing partition
5 UUIDs
6
7commit 05c69d298c96703741cac9a5cbbf6c53bd55a6e2 upstream.
8
96d1d8050b4bc8 "block, partition: add partition_meta_info to hd_struct"
10added part_unpack_uuid() which assumes that the passed in buffer has
11enough space for sprintfing "%pU" - 37 characters including '\0'.
12
13Unfortunately, b5af921ec0233 "init: add support for root devices
14specified by partition UUID" supplied 33 bytes buffer to the function
15leading to the following panic with stackprotector enabled.
16
17 Kernel panic - not syncing: stack-protector: Kernel stack corrupted in: ffffffff81b14c7e
18
19 [<ffffffff815e226b>] panic+0xba/0x1c6
20 [<ffffffff81b14c7e>] ? printk_all_partitions+0x259/0x26xb
21 [<ffffffff810566bb>] __stack_chk_fail+0x1b/0x20
22 [<ffffffff81b15c7e>] printk_all_paritions+0x259/0x26xb
23 [<ffffffff81aedfe0>] mount_block_root+0x1bc/0x27f
24 [<ffffffff81aee0fa>] mount_root+0x57/0x5b
25 [<ffffffff81aee23b>] prepare_namespace+0x13d/0x176
26 [<ffffffff8107eec0>] ? release_tgcred.isra.4+0x330/0x30
27 [<ffffffff81aedd60>] kernel_init+0x155/0x15a
28 [<ffffffff81087b97>] ? schedule_tail+0x27/0xb0
29 [<ffffffff815f4d24>] kernel_thread_helper+0x5/0x10
30 [<ffffffff81aedc0b>] ? start_kernel+0x3c5/0x3c5
31 [<ffffffff815f4d20>] ? gs_change+0x13/0x13
32
33Increase the buffer size, remove the dangerous part_unpack_uuid() and
34use snprintf() directly from printk_all_partitions().
35
36Signed-off-by: Tejun Heo <tj@kernel.org>
37Reported-by: Szymon Gruszczynski <sz.gruszczynski@googlemail.com>
38Cc: Will Drewry <wad@chromium.org>
39Signed-off-by: Jens Axboe <axboe@kernel.dk>
40Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
41---
42 block/genhd.c | 10 ++++++----
43 include/linux/genhd.h | 6 ------
44 2 files changed, 6 insertions(+), 10 deletions(-)
45
46diff --git a/block/genhd.c b/block/genhd.c
47index 997afd6..4927476 100644
48--- a/block/genhd.c
49+++ b/block/genhd.c
50@@ -744,7 +744,7 @@ void __init printk_all_partitions(void)
51 struct hd_struct *part;
52 char name_buf[BDEVNAME_SIZE];
53 char devt_buf[BDEVT_SIZE];
54- u8 uuid[PARTITION_META_INFO_UUIDLTH * 2 + 1];
55+ char uuid_buf[PARTITION_META_INFO_UUIDLTH * 2 + 5];
56
57 /*
58 * Don't show empty devices or things that have been
59@@ -763,14 +763,16 @@ void __init printk_all_partitions(void)
60 while ((part = disk_part_iter_next(&piter))) {
61 bool is_part0 = part == &disk->part0;
62
63- uuid[0] = 0;
64+ uuid_buf[0] = '\0';
65 if (part->info)
66- part_unpack_uuid(part->info->uuid, uuid);
67+ snprintf(uuid_buf, sizeof(uuid_buf), "%pU",
68+ part->info->uuid);
69
70 printk("%s%s %10llu %s %s", is_part0 ? "" : " ",
71 bdevt_str(part_devt(part), devt_buf),
72 (unsigned long long)part->nr_sects >> 1,
73- disk_name(disk, part->partno, name_buf), uuid);
74+ disk_name(disk, part->partno, name_buf),
75+ uuid_buf);
76 if (is_part0) {
77 if (disk->driverfs_dev != NULL &&
78 disk->driverfs_dev->driver != NULL)
79diff --git a/include/linux/genhd.h b/include/linux/genhd.h
80index c6f7f6a..4eec461 100644
81--- a/include/linux/genhd.h
82+++ b/include/linux/genhd.h
83@@ -222,12 +222,6 @@ static inline void part_pack_uuid(const u8 *uuid_str, u8 *to)
84 }
85 }
86
87-static inline char *part_unpack_uuid(const u8 *uuid, char *out)
88-{
89- sprintf(out, "%pU", uuid);
90- return out;
91-}
92-
93 static inline int disk_max_parts(struct gendisk *disk)
94 {
95 if (disk->flags & GENHD_FL_EXT_DEVT)
96--
971.7.9.5
98
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch
new file mode 100644
index 00000000..8ca86893
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch
@@ -0,0 +1,43 @@
1From 882770bdde14aed9bf896980f51fe2fc8a55623f Mon Sep 17 00:00:00 2001
2From: James Bottomley <JBottomley@Parallels.com>
3Date: Tue, 15 May 2012 11:04:19 +0100
4Subject: [PATCH 011/117] fix PA1.1 oops on boot
5
6commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376 upstream.
7
8All PA1.1 systems have been oopsing on boot since
9
10commit f311847c2fcebd81912e2f0caf8a461dec28db41
11Author: James Bottomley <James.Bottomley@HansenPartnership.com>
12Date: Wed Dec 22 10:22:11 2010 -0600
13
14 parisc: flush pages through tmpalias space
15
16because a PA2.0 instruction was accidentally introduced into the PA1.1 TLB
17insertion interruption path when it was consolidated with the do_alias macro.
18Fix the do_alias macro only to use PA2.0 instructions if compiled for 64 bit.
19Signed-off-by: James Bottomley <JBottomley@Parallels.com>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 arch/parisc/kernel/entry.S | 4 ++++
23 1 file changed, 4 insertions(+)
24
25diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
26index 6f05944..5350342 100644
27--- a/arch/parisc/kernel/entry.S
28+++ b/arch/parisc/kernel/entry.S
29@@ -581,7 +581,11 @@
30 */
31 cmpiclr,= 0x01,\tmp,%r0
32 ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
33+#ifdef CONFIG_64BIT
34 depd,z \prot,8,7,\prot
35+#else
36+ depw,z \prot,8,7,\prot
37+#endif
38 /*
39 * OK, it is in the temp alias region, check whether "from" or "to".
40 * Check "subtle" note in pacache.S re: r23/r26.
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch
new file mode 100644
index 00000000..a5f61214
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch
@@ -0,0 +1,91 @@
1From 95093fb411e522ec7a6c33d12863107ba841fe72 Mon Sep 17 00:00:00 2001
2From: John David Anglin <dave.anglin@bell.net>
3Date: Wed, 16 May 2012 10:14:52 +0100
4Subject: [PATCH 012/117] fix crash in flush_icache_page_asm on PA1.1
5
6commit 207f583d7179f707f402c36a7bda5ca1fd03ad5b upstream.
7
8As pointed out by serveral people, PA1.1 only has a type 26 instruction
9meaning that the space register must be explicitly encoded. Not giving an
10explicit space means that the compiler uses the type 24 version which is PA2.0
11only resulting in an illegal instruction crash.
12
13This regression was caused by
14
15 commit f311847c2fcebd81912e2f0caf8a461dec28db41
16 Author: James Bottomley <James.Bottomley@HansenPartnership.com>
17 Date: Wed Dec 22 10:22:11 2010 -0600
18
19 parisc: flush pages through tmpalias space
20
21Reported-by: Helge Deller <deller@gmx.de>
22Signed-off-by: John David Anglin <dave.anglin@bell.net>
23Signed-off-by: James Bottomley <JBottomley@Parallels.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 arch/parisc/kernel/pacache.S | 38 ++++++++++++++++++++------------------
27 1 file changed, 20 insertions(+), 18 deletions(-)
28
29diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
30index 93ff3d9..5d7218a 100644
31--- a/arch/parisc/kernel/pacache.S
32+++ b/arch/parisc/kernel/pacache.S
33@@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm)
34
35 /* Purge any old translation */
36
37- pitlb (%sr0,%r28)
38+ pitlb (%sr4,%r28)
39
40 ldil L%icache_stride, %r1
41 ldw R%icache_stride(%r1), %r1
42@@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm)
43 sub %r25, %r1, %r25
44
45
46-1: fic,m %r1(%r28)
47- fic,m %r1(%r28)
48- fic,m %r1(%r28)
49- fic,m %r1(%r28)
50- fic,m %r1(%r28)
51- fic,m %r1(%r28)
52- fic,m %r1(%r28)
53- fic,m %r1(%r28)
54- fic,m %r1(%r28)
55- fic,m %r1(%r28)
56- fic,m %r1(%r28)
57- fic,m %r1(%r28)
58- fic,m %r1(%r28)
59- fic,m %r1(%r28)
60- fic,m %r1(%r28)
61+ /* fic only has the type 26 form on PA1.1, requiring an
62+ * explicit space specification, so use %sr4 */
63+1: fic,m %r1(%sr4,%r28)
64+ fic,m %r1(%sr4,%r28)
65+ fic,m %r1(%sr4,%r28)
66+ fic,m %r1(%sr4,%r28)
67+ fic,m %r1(%sr4,%r28)
68+ fic,m %r1(%sr4,%r28)
69+ fic,m %r1(%sr4,%r28)
70+ fic,m %r1(%sr4,%r28)
71+ fic,m %r1(%sr4,%r28)
72+ fic,m %r1(%sr4,%r28)
73+ fic,m %r1(%sr4,%r28)
74+ fic,m %r1(%sr4,%r28)
75+ fic,m %r1(%sr4,%r28)
76+ fic,m %r1(%sr4,%r28)
77+ fic,m %r1(%sr4,%r28)
78 cmpb,COND(<<) %r28, %r25,1b
79- fic,m %r1(%r28)
80+ fic,m %r1(%sr4,%r28)
81
82 sync
83 bv %r0(%r2)
84- pitlb (%sr0,%r25)
85+ pitlb (%sr4,%r25)
86 .exit
87
88 .procend
89--
901.7.9.5
91
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch
new file mode 100644
index 00000000..461025a2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch
@@ -0,0 +1,39 @@
1From ae4fc9e89e9e7fb510ddbff1c3ca6d41477f45e1 Mon Sep 17 00:00:00 2001
2From: James Bottomley <JBottomley@Parallels.com>
3Date: Wed, 16 May 2012 11:10:27 +0100
4Subject: [PATCH 013/117] fix panic on prefetch(NULL) on PA7300LC
5
6commit b3cb8674811d1851bbf1486a73d62b90c119b994 upstream.
7
8Due to an errata, the PA7300LC generates a TLB miss interruption even on the
9prefetch instruction. This means that prefetch(NULL), which is supposed to be
10a nop on linux actually generates a NULL deref fault. Fix this by testing the
11address of prefetch against NULL before doing the prefetch.
12
13Signed-off-by: James Bottomley <JBottomley@Parallels.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 arch/parisc/include/asm/prefetch.h | 7 ++++++-
17 1 file changed, 6 insertions(+), 1 deletion(-)
18
19diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h
20index c5edc60..1ee7c82 100644
21--- a/arch/parisc/include/asm/prefetch.h
22+++ b/arch/parisc/include/asm/prefetch.h
23@@ -21,7 +21,12 @@
24 #define ARCH_HAS_PREFETCH
25 static inline void prefetch(const void *addr)
26 {
27- __asm__("ldw 0(%0), %%r0" : : "r" (addr));
28+ __asm__(
29+#ifndef CONFIG_PA20
30+ /* Need to avoid prefetch of NULL on PA7300LC */
31+ " extrw,u,= %0,31,32,%%r0\n"
32+#endif
33+ " ldw 0(%0), %%r0" : : "r" (addr));
34 }
35
36 /* LDD is a PA2.0 addition. */
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch
new file mode 100644
index 00000000..abfee03b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch
@@ -0,0 +1,31 @@
1From 083a3c3d326ad085b05c8606f4ea8594ca6467b8 Mon Sep 17 00:00:00 2001
2From: Chris Metcalf <cmetcalf@tilera.com>
3Date: Tue, 27 Mar 2012 13:47:57 -0400
4Subject: [PATCH 014/117] arch/tile/Kconfig: remove pointless "!M386" test.
5
6commit 8d6951439ef524683057251f1231df232046b6b6 upstream.
7
8Looks like a cut and paste bug from the x86 version.
9
10Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
11Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
12---
13 arch/tile/Kconfig | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
17index 70a0de4..7c9d2d4 100644
18--- a/arch/tile/Kconfig
19+++ b/arch/tile/Kconfig
20@@ -12,7 +12,7 @@ config TILE
21 select GENERIC_PENDING_IRQ if SMP
22 select GENERIC_IRQ_SHOW
23 select SYS_HYPERVISOR
24- select ARCH_HAVE_NMI_SAFE_CMPXCHG if !M386
25+ select ARCH_HAVE_NMI_SAFE_CMPXCHG
26
27 # FIXME: investigate whether we need/want these options.
28 # select HAVE_IOREMAP_PROT
29--
301.7.9.5
31
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch
new file mode 100644
index 00000000..593e1842
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch
@@ -0,0 +1,39 @@
1From 7f297eaca9b90a9be05ebe02c90efca3692136db Mon Sep 17 00:00:00 2001
2From: Chris Metcalf <cmetcalf@tilera.com>
3Date: Fri, 18 May 2012 13:33:24 -0400
4Subject: [PATCH 015/117] tilegx: enable SYSCALL_WRAPPERS support
5
6commit e6d9668e119af44ae5bcd5f1197174531458afe3 upstream.
7
8Some discussion with the glibc mailing lists revealed that this was
9necessary for 64-bit platforms with MIPS-like sign-extension rules
10for 32-bit values. The original symptom was that passing (uid_t)-1 to
11setreuid() was failing in programs linked -pthread because of the "setxid"
12mechanism for passing setxid-type function arguments to the syscall code.
13SYSCALL_WRAPPERS handles ensuring that all syscall arguments end up with
14proper sign-extension and is thus the appropriate fix for this problem.
15
16On other platforms (s390, powerpc, sparc64, and mips) this was fixed
17in 2.6.28.6. The general issue is tracked as CVE-2009-0029.
18
19Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 arch/tile/Kconfig | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
26index 7c9d2d4..6cb8319 100644
27--- a/arch/tile/Kconfig
28+++ b/arch/tile/Kconfig
29@@ -11,6 +11,7 @@ config TILE
30 select GENERIC_IRQ_PROBE
31 select GENERIC_PENDING_IRQ if SMP
32 select GENERIC_IRQ_SHOW
33+ select HAVE_SYSCALL_WRAPPERS if TILEGX
34 select SYS_HYPERVISOR
35 select ARCH_HAVE_NMI_SAFE_CMPXCHG
36
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch
new file mode 100644
index 00000000..14de1bab
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch
@@ -0,0 +1,33 @@
1From 183929ad3fad7588523ae70fa91912196d4697db Mon Sep 17 00:00:00 2001
2From: Maxim Levitsky <maximlevitsky@gmail.com>
3Date: Sat, 17 Mar 2012 20:16:53 +0200
4Subject: [PATCH 016/117] mtd: sm_ftl: fix typo in major number.
5
6commit 452380efbd72d8d41f53ea64c8a6ea1fedc4394d upstream.
7
8major == 0 allocates dynamic major, not major == -1
9
10Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
11Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/mtd/sm_ftl.c | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
19index fddb714..a9ff89ff 100644
20--- a/drivers/mtd/sm_ftl.c
21+++ b/drivers/mtd/sm_ftl.c
22@@ -1256,7 +1256,7 @@ static void sm_remove_dev(struct mtd_blktrans_dev *dev)
23
24 static struct mtd_blktrans_ops sm_ftl_ops = {
25 .name = "smblk",
26- .major = -1,
27+ .major = 0,
28 .part_bits = SM_FTL_PARTN_BITS,
29 .blksize = SM_SECTOR_SIZE,
30 .getgeo = sm_getgeo,
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch
new file mode 100644
index 00000000..58f4fce6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch
@@ -0,0 +1,77 @@
1From 3b1c9abc52f8145721d64abf54bf65139554f2be Mon Sep 17 00:00:00 2001
2From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
3Date: Thu, 19 Jan 2012 14:01:04 -0600
4Subject: [PATCH 017/117] hpsa: Fix problem with MSA2xxx devices
5
6commit 9bc3711cbb67ac620bf09b4a147cbab45b2c36c0 upstream.
7
8Upgraded firmware on Smart Array P7xx (and some others) made them show up as
9SCSI revision 5 devices and this caused the driver to fail to map MSA2xxx
10logical drives to the correct bus/target/lun. A symptom of this would be that
11the target ID of the logical drives as presented by the external storage array
12is ignored, and all such logical drives are assigned to target zero,
13differentiated only by LUN. Some multipath software reportedly does not deal
14well with this behavior, failing to recognize different paths to the same
15device as such.
16
17Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
18Signed-off-by: Scott Teel <scott.teel@hp.com>
19Signed-off-by: James Bottomley <JBottomley@Parallels.com>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/scsi/hpsa.c | 34 +++++++++++++++-------------------
23 1 file changed, 15 insertions(+), 19 deletions(-)
24
25diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
26index 865d452..dc9dea3 100644
27--- a/drivers/scsi/hpsa.c
28+++ b/drivers/scsi/hpsa.c
29@@ -1674,30 +1674,26 @@ static void figure_bus_target_lun(struct ctlr_info *h,
30
31 if (is_logical_dev_addr_mode(lunaddrbytes)) {
32 /* logical device */
33- if (unlikely(is_scsi_rev_5(h))) {
34- /* p1210m, logical drives lun assignments
35- * match SCSI REPORT LUNS data.
36+ lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
37+ if (is_msa2xxx(h, device)) {
38+ /* msa2xxx way, put logicals on bus 1
39+ * and match target/lun numbers box
40+ * reports.
41 */
42- lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
43- *bus = 0;
44- *target = 0;
45- *lun = (lunid & 0x3fff) + 1;
46+ *bus = 1;
47+ *target = (lunid >> 16) & 0x3fff;
48+ *lun = lunid & 0x00ff;
49 } else {
50- /* not p1210m... */
51- lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
52- if (is_msa2xxx(h, device)) {
53- /* msa2xxx way, put logicals on bus 1
54- * and match target/lun numbers box
55- * reports.
56- */
57- *bus = 1;
58- *target = (lunid >> 16) & 0x3fff;
59- *lun = lunid & 0x00ff;
60+ if (likely(is_scsi_rev_5(h))) {
61+ /* All current smart arrays (circa 2011) */
62+ *bus = 0;
63+ *target = 0;
64+ *lun = (lunid & 0x3fff) + 1;
65 } else {
66- /* Traditional smart array way. */
67+ /* Traditional old smart array way. */
68 *bus = 0;
69- *lun = 0;
70 *target = lunid & 0x3fff;
71+ *lun = 0;
72 }
73 }
74 } else {
75--
761.7.9.5
77
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch
new file mode 100644
index 00000000..dc82d8d8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch
@@ -0,0 +1,34 @@
1From d5263c321d2e9dcacc4eed438d3dad60c13f95ba Mon Sep 17 00:00:00 2001
2From: Eric Paris <eparis@redhat.com>
3Date: Wed, 4 Apr 2012 13:47:11 -0400
4Subject: [PATCH 018/117] SELinux: if sel_make_bools errors don't leave
5 inconsistent state
6
7commit 154c50ca4eb9ae472f50b6a481213e21ead4457d upstream.
8
9We reset the bool names and values array to NULL, but do not reset the
10number of entries in these arrays to 0. If we error out and then get back
11into this function we will walk these NULL pointers based on the belief
12that they are non-zero length.
13
14Signed-off-by: Eric Paris <eparis@redhat.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 security/selinux/selinuxfs.c | 1 +
18 1 file changed, 1 insertion(+)
19
20diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
21index f466587..b4f802d 100644
22--- a/security/selinux/selinuxfs.c
23+++ b/security/selinux/selinuxfs.c
24@@ -1238,6 +1238,7 @@ static int sel_make_bools(void)
25 kfree(bool_pending_names[i]);
26 kfree(bool_pending_names);
27 kfree(bool_pending_values);
28+ bool_num = 0;
29 bool_pending_names = NULL;
30 bool_pending_values = NULL;
31
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch
new file mode 100644
index 00000000..20927ded
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch
@@ -0,0 +1,86 @@
1From d9029a9d61ea9f9f8b153d7967365d66229b3874 Mon Sep 17 00:00:00 2001
2From: "Luis R. Rodriguez" <mcgrof@frijolero.org>
3Date: Fri, 23 Mar 2012 07:23:31 -0700
4Subject: [PATCH 019/117] cfg80211: warn if db.txt is empty with
5 CONFIG_CFG80211_INTERNAL_REGDB
6
7commit 80007efeff0568375b08faf93c7aad65602cb97e upstream.
8
9It has happened twice now where elaborate troubleshooting has
10undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
11has been set but yet net/wireless/db.txt was not updated.
12
13Despite the documentation on this it seems system integrators could
14use some more help with this, so throw out a kernel warning at boot time
15when their database is empty.
16
17This does mean that the error-prone system integrator won't likely
18realize the issue until they boot the machine but -- it does not seem
19to make sense to enable a build bug breaking random build testing.
20
21[0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB
22
23Cc: Stephen Rothwell <sfr@canb.auug.org.au>
24Cc: Youngsin Lee <youngsin@qualcomm.com>
25Cc: Raja Mani <rmani@qca.qualcomm.com>
26Cc: Senthil Kumar Balasubramanian <senthilb@qca.qualcomm.com>
27Cc: Vipin Mehta <vipimeht@qca.qualcomm.com>
28Cc: yahuan@qca.qualcomm.com
29Cc: jjan@qca.qualcomm.com
30Cc: vthiagar@qca.qualcomm.com
31Cc: henrykim@qualcomm.com
32Cc: jouni@qca.qualcomm.com
33Cc: athiruve@qca.qualcomm.com
34Cc: cjkim@qualcomm.com
35Cc: philipk@qca.qualcomm.com
36Cc: sunnykim@qualcomm.com
37Cc: sskwak@qualcomm.com
38Cc: kkim@qualcomm.com
39Cc: mattbyun@qualcomm.com
40Cc: ryanlee@qualcomm.com
41Cc: simbap@qualcomm.com
42Cc: krislee@qualcomm.com
43Cc: conner@qualcomm.com
44Cc: hojinkim@qualcomm.com
45Cc: honglee@qualcomm.com
46Cc: johnwkim@qualcomm.com
47Cc: jinyong@qca.qualcomm.com
48Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
49Signed-off-by: John W. Linville <linville@tuxdriver.com>
50Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
51---
52 net/wireless/reg.c | 10 ++++++++++
53 1 file changed, 10 insertions(+)
54
55diff --git a/net/wireless/reg.c b/net/wireless/reg.c
56index 3302c56..c1c99dd 100644
57--- a/net/wireless/reg.c
58+++ b/net/wireless/reg.c
59@@ -379,7 +379,15 @@ static void reg_regdb_query(const char *alpha2)
60
61 schedule_work(&reg_regdb_work);
62 }
63+
64+/* Feel free to add any other sanity checks here */
65+static void reg_regdb_size_check(void)
66+{
67+ /* We should ideally BUILD_BUG_ON() but then random builds would fail */
68+ WARN_ONCE(!reg_regdb_size, "db.txt is empty, you should update it...");
69+}
70 #else
71+static inline void reg_regdb_size_check(void) {}
72 static inline void reg_regdb_query(const char *alpha2) {}
73 #endif /* CONFIG_CFG80211_INTERNAL_REGDB */
74
75@@ -2236,6 +2244,8 @@ int __init regulatory_init(void)
76 spin_lock_init(&reg_requests_lock);
77 spin_lock_init(&reg_pending_beacons_lock);
78
79+ reg_regdb_size_check();
80+
81 cfg80211_regdomain = cfg80211_world_regdom;
82
83 user_alpha2[0] = '9';
84--
851.7.9.5
86
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch
new file mode 100644
index 00000000..d27b465a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch
@@ -0,0 +1,60 @@
1From b12bc1d8337657ea79d90aecba397eaee36d10f6 Mon Sep 17 00:00:00 2001
2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com>
3Date: Tue, 20 Mar 2012 12:10:01 +0530
4Subject: [PATCH 020/117] mpt2sas: Fix for panic happening because of improper
5 memory allocation
6
7commit e42fafc25fa86c61824e8d4c5e7582316415d24f upstream.
8
9The ioc->pfacts member in the IOC structure is getting set to zero
10following a call to _base_get_ioc_facts due to the memset in that routine.
11So if the ioc->pfacts was read after a host reset, there would be a NULL
12pointer dereference. The routine _base_get_ioc_facts is called from context
13of host reset. The problem in _base_get_ioc_facts is the size of
14Mpi2IOCFactsReply is 64, whereas the sizeof "struct mpt2sas_facts" is 60,
15so there is a four byte overflow resulting from the memset.
16
17Also, there is memset in _base_get_port_facts using the incorrect structure,
18it should be "struct mpt2sas_port_facts" instead of Mpi2PortFactsReply.
19
20Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
21Signed-off-by: James Bottomley <JBottomley@Parallels.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++---
25 1 file changed, 3 insertions(+), 3 deletions(-)
26
27diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
28index b1ddfef..ac336e1 100644
29--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
30+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
31@@ -3274,7 +3274,7 @@ _base_get_port_facts(struct MPT2SAS_ADAPTER *ioc, int port, int sleep_flag)
32 }
33
34 pfacts = &ioc->pfacts[port];
35- memset(pfacts, 0, sizeof(Mpi2PortFactsReply_t));
36+ memset(pfacts, 0, sizeof(struct mpt2sas_port_facts));
37 pfacts->PortNumber = mpi_reply.PortNumber;
38 pfacts->VP_ID = mpi_reply.VP_ID;
39 pfacts->VF_ID = mpi_reply.VF_ID;
40@@ -3316,7 +3316,7 @@ _base_get_ioc_facts(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
41 }
42
43 facts = &ioc->facts;
44- memset(facts, 0, sizeof(Mpi2IOCFactsReply_t));
45+ memset(facts, 0, sizeof(struct mpt2sas_facts));
46 facts->MsgVersion = le16_to_cpu(mpi_reply.MsgVersion);
47 facts->HeaderVersion = le16_to_cpu(mpi_reply.HeaderVersion);
48 facts->VP_ID = mpi_reply.VP_ID;
49@@ -4193,7 +4193,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
50 goto out_free_resources;
51
52 ioc->pfacts = kcalloc(ioc->facts.NumberOfPorts,
53- sizeof(Mpi2PortFactsReply_t), GFP_KERNEL);
54+ sizeof(struct mpt2sas_port_facts), GFP_KERNEL);
55 if (!ioc->pfacts) {
56 r = -ENOMEM;
57 goto out_free_resources;
58--
591.7.9.5
60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch
new file mode 100644
index 00000000..ba583934
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch
@@ -0,0 +1,87 @@
1From cb510e3381f2dda5ad0cdf3519e6eee50ee2081e Mon Sep 17 00:00:00 2001
2From: Tilman Schmidt <tilman@imap.cc>
3Date: Wed, 25 Apr 2012 13:02:19 +0000
4Subject: [PATCH 021/117] isdn/gigaset: ratelimit CAPI message dumps
5
6commit 8e618aad5348b6e6c5a90e8d97ea643197963b20 upstream.
7
8Introduce a global ratelimit for CAPI message dumps to protect
9against possible log flood.
10Drop the ratelimit for ignored messages which is now covered by the
11global one.
12
13Signed-off-by: Tilman Schmidt <tilman@imap.cc>
14Signed-off-by: David S. Miller <davem@davemloft.net>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/isdn/gigaset/capi.c | 22 +++++++++-------------
18 1 file changed, 9 insertions(+), 13 deletions(-)
19
20diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c
21index 6d5ceee..5b80ef7 100644
22--- a/drivers/isdn/gigaset/capi.c
23+++ b/drivers/isdn/gigaset/capi.c
24@@ -14,6 +14,7 @@
25 #include "gigaset.h"
26 #include <linux/proc_fs.h>
27 #include <linux/seq_file.h>
28+#include <linux/ratelimit.h>
29 #include <linux/isdn/capilli.h>
30 #include <linux/isdn/capicmd.h>
31 #include <linux/isdn/capiutil.h>
32@@ -223,10 +224,14 @@ get_appl(struct gigaset_capi_ctr *iif, u16 appl)
33 static inline void dump_cmsg(enum debuglevel level, const char *tag, _cmsg *p)
34 {
35 #ifdef CONFIG_GIGASET_DEBUG
36+ /* dump at most 20 messages in 20 secs */
37+ static DEFINE_RATELIMIT_STATE(msg_dump_ratelimit, 20 * HZ, 20);
38 _cdebbuf *cdb;
39
40 if (!(gigaset_debuglevel & level))
41 return;
42+ if (!___ratelimit(&msg_dump_ratelimit, tag))
43+ return;
44
45 cdb = capi_cmsg2str(p);
46 if (cdb) {
47@@ -2059,12 +2064,6 @@ static void do_reset_b3_req(struct gigaset_capi_ctr *iif,
48 }
49
50 /*
51- * dump unsupported/ignored messages at most twice per minute,
52- * some apps send those very frequently
53- */
54-static unsigned long ignored_msg_dump_time;
55-
56-/*
57 * unsupported CAPI message handler
58 */
59 static void do_unsupported(struct gigaset_capi_ctr *iif,
60@@ -2073,8 +2072,7 @@ static void do_unsupported(struct gigaset_capi_ctr *iif,
61 {
62 /* decode message */
63 capi_message2cmsg(&iif->acmsg, skb->data);
64- if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000))
65- dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
66+ dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
67 send_conf(iif, ap, skb, CapiMessageNotSupportedInCurrentState);
68 }
69
70@@ -2085,11 +2083,9 @@ static void do_nothing(struct gigaset_capi_ctr *iif,
71 struct gigaset_capi_appl *ap,
72 struct sk_buff *skb)
73 {
74- if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000)) {
75- /* decode message */
76- capi_message2cmsg(&iif->acmsg, skb->data);
77- dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
78- }
79+ /* decode message */
80+ capi_message2cmsg(&iif->acmsg, skb->data);
81+ dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
82 dev_kfree_skb_any(skb);
83 }
84
85--
861.7.9.5
87
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch
new file mode 100644
index 00000000..92a5406b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch
@@ -0,0 +1,46 @@
1From 49aed427d03f5bc84f690900a4a13c52b4c0916c Mon Sep 17 00:00:00 2001
2From: Tilman Schmidt <tilman@imap.cc>
3Date: Wed, 25 Apr 2012 13:02:20 +0000
4Subject: [PATCH 022/117] isdn/gigaset: fix CAPI disconnect B3 handling
5
6commit 62a1cfe052346b96a552b6a9178d412c709711bb upstream.
7
8If DISCONNECT_B3_IND was synthesized because of a DISCONNECT_REQ
9with existing logical connections, the connection state wasn't
10updated accordingly. Also the emitted DISCONNECT_B3_IND message
11wasn't included in the debug log as requested.
12This patch fixes both of these issues.
13
14Signed-off-by: Tilman Schmidt <tilman@imap.cc>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16[bwh: Backported to 3.2: adjust context]
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/isdn/gigaset/capi.c | 4 ++++
20 1 file changed, 4 insertions(+)
21
22diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c
23index 5b80ef7..fd17bb3 100644
24--- a/drivers/isdn/gigaset/capi.c
25+++ b/drivers/isdn/gigaset/capi.c
26@@ -1887,6 +1887,9 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif,
27
28 /* check for active logical connection */
29 if (bcs->apconnstate >= APCONN_ACTIVE) {
30+ /* clear it */
31+ bcs->apconnstate = APCONN_SETUP;
32+
33 /*
34 * emit DISCONNECT_B3_IND with cause 0x3301
35 * use separate cmsg structure, as the content of iif->acmsg
36@@ -1911,6 +1914,7 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif,
37 }
38 capi_cmsg2message(b3cmsg,
39 __skb_put(b3skb, CAPI_DISCONNECT_B3_IND_BASELEN));
40+ dump_cmsg(DEBUG_CMD, __func__, b3cmsg);
41 kfree(b3cmsg);
42 capi_ctr_handle_message(&iif->ctr, ap->id, b3skb);
43 }
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch
new file mode 100644
index 00000000..efbdbbb6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch
@@ -0,0 +1,47 @@
1From acee45e91a831a741676284dc84513b074705805 Mon Sep 17 00:00:00 2001
2From: Tilman Schmidt <tilman@imap.cc>
3Date: Wed, 25 Apr 2012 13:02:20 +0000
4Subject: [PATCH 023/117] isdn/gigaset: improve error handling querying
5 firmware version
6
7commit e055d03dc088a990fe5ea24a2d64033a168da23c upstream.
8
9An out-of-place "OK" response to the "AT+GMR" (get firmware version)
10command turns out to be, more often than not, a delayed response to
11a previous command rather than an actual error, so continue waiting
12for the version number in that case.
13
14Signed-off-by: Tilman Schmidt <tilman@imap.cc>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16[bwh: Backported to 3.2: adjust indentation]
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/isdn/gigaset/ev-layer.c | 4 +++-
20 1 file changed, 3 insertions(+), 1 deletion(-)
21
22diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
23index 6d12623..e95fac0 100644
24--- a/drivers/isdn/gigaset/ev-layer.c
25+++ b/drivers/isdn/gigaset/ev-layer.c
26@@ -190,6 +190,7 @@ struct reply_t gigaset_tab_nocid[] =
27 ACT_INIT} },
28 {RSP_OK, 121, 121, -1, 0, 0, {ACT_GOTVER,
29 ACT_INIT} },
30+{RSP_NONE, 121, 121, -1, 120, 0, {ACT_GETSTRING} },
31
32 /* leave dle mode */
33 {RSP_INIT, 0, 0, SEQ_DLE0, 201, 5, {0}, "^SDLE=0\r"},
34@@ -1314,8 +1315,9 @@ static void do_action(int action, struct cardstate *cs,
35 s = ev->ptr;
36
37 if (!strcmp(s, "OK")) {
38+ /* OK without version string: assume old response */
39 *p_genresp = 1;
40- *p_resp_code = RSP_ERROR;
41+ *p_resp_code = RSP_NONE;
42 break;
43 }
44
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch
new file mode 100644
index 00000000..52b1d96e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch
@@ -0,0 +1,60 @@
1From ab5b15d0550f35ed49bb445fe04092d8b6fac542 Mon Sep 17 00:00:00 2001
2From: David Howells <dhowells@redhat.com>
3Date: Fri, 11 May 2012 10:56:56 +0100
4Subject: [PATCH 024/117] KEYS: Use the compat keyctl() syscall wrapper on
5 Sparc64 for Sparc32 compat
6
7commit 45de6767dc51358a188f75dc4ad9dfddb7fb9480 upstream.
8
9Use the 32-bit compat keyctl() syscall wrapper on Sparc64 for Sparc32 binary
10compatibility.
11
12Without this, keyctl(KEYCTL_INSTANTIATE_IOV) is liable to malfunction as it
13uses an iovec array read from userspace - though the kernel should survive this
14as it checks pointers and sizes anyway.
15
16I think all the other keyctl() function should just work, provided (a) the top
1732-bits of each 64-bit argument register are cleared prior to invoking the
18syscall routine, and the 32-bit address space is right at the 0-end of the
1964-bit address space. Most of the arguments are 32-bit anyway, and so for
20those clearing is not required.
21
22Signed-off-by: David Howells <dhowells@redhat.com
23cc: "David S. Miller" <davem@davemloft.net>
24cc: sparclinux@vger.kernel.org
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 arch/sparc/Kconfig | 3 +++
28 arch/sparc/kernel/systbls_64.S | 2 +-
29 2 files changed, 4 insertions(+), 1 deletion(-)
30
31diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
32index f92602e..f210d51 100644
33--- a/arch/sparc/Kconfig
34+++ b/arch/sparc/Kconfig
35@@ -583,6 +583,9 @@ config SYSVIPC_COMPAT
36 depends on COMPAT && SYSVIPC
37 default y
38
39+config KEYS_COMPAT
40+ def_bool y if COMPAT && KEYS
41+
42 endmenu
43
44 source "net/Kconfig"
45diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
46index db86b1a..3a58e0d 100644
47--- a/arch/sparc/kernel/systbls_64.S
48+++ b/arch/sparc/kernel/systbls_64.S
49@@ -74,7 +74,7 @@ sys_call_table32:
50 .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
51 /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
52 .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
53-/*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat
54+/*280*/ .word sys32_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat
55 .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
56 /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
57 .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
58--
591.7.9.5
60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch
new file mode 100644
index 00000000..fe3c1e72
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch
@@ -0,0 +1,38 @@
1From a107ab4ce96a6243eca41ca139acc033a8be253b Mon Sep 17 00:00:00 2001
2From: Yishai Hadas <yishaih@mellanox.com>
3Date: Thu, 10 May 2012 23:28:05 +0300
4Subject: [PATCH 025/117] IB/core: Fix mismatch between locked and pinned
5 pages
6
7commit c4870eb874ac16dccef40e1bc7a002c7e9156adc upstream.
8
9Commit bc3e53f682d9 ("mm: distinguish between mlocked and pinned
10pages") introduced a separate counter for pinned pages and used it in
11the IB stack. However, in ib_umem_get() the pinned counter is
12incremented, but ib_umem_release() wrongly decrements the locked
13counter. Fix this.
14
15Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
16Reviewed-by: Christoph Lameter <cl@linux.com>
17Signed-off-by: Roland Dreier <roland@purestorage.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/infiniband/core/umem.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
24index 71f0c0f..a841123 100644
25--- a/drivers/infiniband/core/umem.c
26+++ b/drivers/infiniband/core/umem.c
27@@ -269,7 +269,7 @@ void ib_umem_release(struct ib_umem *umem)
28 } else
29 down_write(&mm->mmap_sem);
30
31- current->mm->locked_vm -= diff;
32+ current->mm->pinned_vm -= diff;
33 up_write(&mm->mmap_sem);
34 mmput(mm);
35 kfree(umem);
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch
new file mode 100644
index 00000000..027fb88b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch
@@ -0,0 +1,34 @@
1From 675478b722ec5e21b9e1db453e3c59ced85b2008 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Sun, 13 May 2012 18:35:56 +0100
4Subject: [PATCH 026/117] regulator: core: Release regulator-regulator
5 supplies on error
6
7commit e81dba85c6388dfabcb76cbc2b8bd02836a53ae5 upstream.
8
9If we fail while registering a regulator make sure we release the supply
10for the regulator if there is one.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Acked-by: Liam Girdwood <lrg@ti.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/regulator/core.c | 2 ++
17 1 file changed, 2 insertions(+)
18
19diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
20index 938398f..6ec610c 100644
21--- a/drivers/regulator/core.c
22+++ b/drivers/regulator/core.c
23@@ -2765,6 +2765,8 @@ unset_supplies:
24 unset_regulator_supplies(rdev);
25
26 scrub:
27+ if (rdev->supply)
28+ regulator_put(rdev->supply);
29 kfree(rdev->constraints);
30 device_unregister(&rdev->dev);
31 /* device core frees rdev */
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch
new file mode 100644
index 00000000..4ab581b1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch
@@ -0,0 +1,41 @@
1From 3dd0f718e41c8a6e580d3c11f8153ffd7ddeacde Mon Sep 17 00:00:00 2001
2From: Dan Carpenter <dan.carpenter@oracle.com>
3Date: Sun, 13 May 2012 20:09:38 +0300
4Subject: [PATCH 027/117] iommu: Fix off by one in dmar_get_fault_reason()
5
6commit fefe1ed1398b81e3fadc92d11d91162d343c8836 upstream.
7
8fault_reason - 0x20 == ARRAY_SIZE(irq_remap_fault_reasons) is
9one past the end of the array.
10
11Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
12Cc: Joerg Roedel <joerg.roedel@amd.com>
13Cc: Youquan Song <youquan.song@intel.com>
14Cc: walter harms <wharms@bfs.de>
15Cc: Suresh Siddha <suresh.b.siddha@intel.com>
16Link: http://lkml.kernel.org/r/20120513170938.GA4280@elgon.mountain
17Signed-off-by: Ingo Molnar <mingo@kernel.org>
18[bwh: Backported to 3.2: s/irq_remap_fault_reasons/intr_remap_fault_reasons/]
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/iommu/dmar.c | 4 ++--
22 1 file changed, 2 insertions(+), 2 deletions(-)
23
24diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
25index 35c1e17..97b2e21 100644
26--- a/drivers/iommu/dmar.c
27+++ b/drivers/iommu/dmar.c
28@@ -1056,8 +1056,8 @@ static const char *intr_remap_fault_reasons[] =
29
30 const char *dmar_get_fault_reason(u8 fault_reason, int *fault_type)
31 {
32- if (fault_reason >= 0x20 && (fault_reason <= 0x20 +
33- ARRAY_SIZE(intr_remap_fault_reasons))) {
34+ if (fault_reason >= 0x20 && (fault_reason - 0x20 <
35+ ARRAY_SIZE(intr_remap_fault_reasons))) {
36 *fault_type = INTR_REMAP;
37 return intr_remap_fault_reasons[fault_reason - 0x20];
38 } else if (fault_reason < ARRAY_SIZE(dma_remap_fault_reasons)) {
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch
new file mode 100644
index 00000000..9fde99ca
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch
@@ -0,0 +1,38 @@
1From e8cefa61ecf62e7ec98658843627df00696699d5 Mon Sep 17 00:00:00 2001
2From: Steve Wise <swise@opengridcomputing.com>
3Date: Fri, 27 Apr 2012 09:59:16 -0500
4Subject: [PATCH 028/117] RDMA/cxgb4: Always wake up waiters in
5 c4iw_peer_abort_intr()
6
7commit 0f1dcfae6bc5563424346ad3a03282b8235a4c33 upstream.
8
9This fixes a race where an ingress abort fails to wake up the thread
10blocked in rdma_init() causing the app to hang.
11
12Signed-off-by: Steve Wise <swise@opengridcomputing.com>
13Signed-off-by: Roland Dreier <roland@purestorage.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/infiniband/hw/cxgb4/cm.c | 5 +----
17 1 file changed, 1 insertion(+), 4 deletions(-)
18
19diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
20index 0747004..151334c 100644
21--- a/drivers/infiniband/hw/cxgb4/cm.c
22+++ b/drivers/infiniband/hw/cxgb4/cm.c
23@@ -2725,11 +2725,8 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb)
24
25 /*
26 * Wake up any threads in rdma_init() or rdma_fini().
27- * However, this is not needed if com state is just
28- * MPA_REQ_SENT
29 */
30- if (ep->com.state != MPA_REQ_SENT)
31- c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET);
32+ c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET);
33 sched(dev, skb);
34 return 0;
35 }
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch
new file mode 100644
index 00000000..99be4e3c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch
@@ -0,0 +1,37 @@
1From 6ccdd0ede34681b1bdda91a5735e700274db9e5c Mon Sep 17 00:00:00 2001
2From: Steve Wise <swise@opengridcomputing.com>
3Date: Mon, 30 Apr 2012 15:31:29 -0500
4Subject: [PATCH 029/117] RDMA/cxgb4: Drop peer_abort when no endpoint found
5
6commit 14b9222808bb8bfefc71f72bc0dbdcf3b2f0140f upstream.
7
8Log a warning and drop the abort message. Otherwise we will do a
9bogus wake_up() and crash.
10
11Signed-off-by: Steve Wise <swise@opengridcomputing.com>
12Signed-off-by: Roland Dreier <roland@purestorage.com>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/infiniband/hw/cxgb4/cm.c | 6 ++++++
16 1 file changed, 6 insertions(+)
17
18diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
19index 151334c..2e6a538 100644
20--- a/drivers/infiniband/hw/cxgb4/cm.c
21+++ b/drivers/infiniband/hw/cxgb4/cm.c
22@@ -2714,6 +2714,12 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb)
23 unsigned int tid = GET_TID(req);
24
25 ep = lookup_tid(t, tid);
26+ if (!ep) {
27+ printk(KERN_WARNING MOD
28+ "Abort on non-existent endpoint, tid %d\n", tid);
29+ kfree_skb(skb);
30+ return 0;
31+ }
32 if (is_neg_adv_abort(req->status)) {
33 PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
34 ep->hwtid);
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch
new file mode 100644
index 00000000..bd7759f3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch
@@ -0,0 +1,82 @@
1From f292f8180fb1ab073d5e88859f3d05608fa1fbe7 Mon Sep 17 00:00:00 2001
2From: Heiko Carstens <heiko.carstens@de.ibm.com>
3Date: Wed, 9 May 2012 09:37:30 +0200
4Subject: [PATCH 030/117] s390/pfault: fix task state race
5
6commit d5e50a51ccbda36b379aba9d1131a852eb908dda upstream.
7
8When setting the current task state to TASK_UNINTERRUPTIBLE this can
9race with a different cpu. The other cpu could set the task state after
10it inspected it (while it was still TASK_RUNNING) to TASK_RUNNING which
11would change the state from TASK_UNINTERRUPTIBLE to TASK_RUNNING again.
12
13This race was always present in the pfault interrupt code but didn't
14cause anything harmful before commit f2db2e6c "[S390] pfault: cpu hotplug
15vs missing completion interrupts" which relied on the fact that after
16setting the task state to TASK_UNINTERRUPTIBLE the task would really
17sleep.
18Since this is not necessarily the case the result may be a list corruption
19of the pfault_list or, as observed, a use-after-free bug while trying to
20access the task_struct of a task which terminated itself already.
21
22To fix this, we need to get a reference of the affected task when receiving
23the initial pfault interrupt and add special handling if we receive yet
24another initial pfault interrupt when the task is already enqueued in the
25pfault list.
26
27Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
28Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
29Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
30Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
31---
32 arch/s390/mm/fault.c | 14 ++++++++++++--
33 1 file changed, 12 insertions(+), 2 deletions(-)
34
35diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
36index c7f0fbc..b28aaa4 100644
37--- a/arch/s390/mm/fault.c
38+++ b/arch/s390/mm/fault.c
39@@ -583,6 +583,7 @@ static void pfault_interrupt(unsigned int ext_int_code,
40 tsk->thread.pfault_wait = 0;
41 list_del(&tsk->thread.list);
42 wake_up_process(tsk);
43+ put_task_struct(tsk);
44 } else {
45 /* Completion interrupt was faster than initial
46 * interrupt. Set pfault_wait to -1 so the initial
47@@ -597,14 +598,22 @@ static void pfault_interrupt(unsigned int ext_int_code,
48 put_task_struct(tsk);
49 } else {
50 /* signal bit not set -> a real page is missing. */
51- if (tsk->thread.pfault_wait == -1) {
52+ if (tsk->thread.pfault_wait == 1) {
53+ /* Already on the list with a reference: put to sleep */
54+ set_task_state(tsk, TASK_UNINTERRUPTIBLE);
55+ set_tsk_need_resched(tsk);
56+ } else if (tsk->thread.pfault_wait == -1) {
57 /* Completion interrupt was faster than the initial
58 * interrupt (pfault_wait == -1). Set pfault_wait
59 * back to zero and exit. */
60 tsk->thread.pfault_wait = 0;
61 } else {
62 /* Initial interrupt arrived before completion
63- * interrupt. Let the task sleep. */
64+ * interrupt. Let the task sleep.
65+ * An extra task reference is needed since a different
66+ * cpu may set the task state to TASK_RUNNING again
67+ * before the scheduler is reached. */
68+ get_task_struct(tsk);
69 tsk->thread.pfault_wait = 1;
70 list_add(&tsk->thread.list, &pfault_list);
71 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
72@@ -629,6 +638,7 @@ static int __cpuinit pfault_cpu_notify(struct notifier_block *self,
73 list_del(&thread->list);
74 tsk = container_of(thread, struct task_struct, thread);
75 wake_up_process(tsk);
76+ put_task_struct(tsk);
77 }
78 spin_unlock_irq(&pfault_lock);
79 break;
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch
new file mode 100644
index 00000000..000d1dca
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch
@@ -0,0 +1,46 @@
1From 51945640120dea3c9b3a0207bc864138c6c1c8a8 Mon Sep 17 00:00:00 2001
2From: Dan Williams <dan.j.williams@intel.com>
3Date: Mon, 30 Apr 2012 11:57:44 -0700
4Subject: [PATCH 031/117] isci: fix oem parameter validation on single
5 controller skus
6
7commit fc25f79af321c01a739150ba2c09435cf977a63d upstream.
8
9OEM parameters [1] are parsed from the platform option-rom / efi
10driver. By default the driver was validating the parameters for the
11dual-controller case, but in single-controller case only the first set
12of parameters may be valid.
13
14Limit the validation to the number of actual controllers detected
15otherwise the driver may fail to parse the valid parameters leading to
16driver-load or runtime failures.
17
18[1] the platform specific set of phy address, configuration,and analog
19 tuning values
20
21[stable v3.0+]
22Reported-by: Dave Jiang <dave.jiang@intel.com>
23Tested-by: Dave Jiang <dave.jiang@intel.com>
24Signed-off-by: Dan Williams <dan.j.williams@intel.com>
25[bwh: Backported to 3.2: adjust context]
26Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
27---
28 drivers/scsi/isci/init.c | 2 +-
29 1 file changed, 1 insertion(+), 1 deletion(-)
30
31diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
32index a97edab..83d08b6 100644
33--- a/drivers/scsi/isci/init.c
34+++ b/drivers/scsi/isci/init.c
35@@ -465,7 +465,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
36 if (!orom)
37 orom = isci_request_oprom(pdev);
38
39- for (i = 0; orom && i < ARRAY_SIZE(orom->ctrl); i++) {
40+ for (i = 0; orom && i < num_controllers(pdev); i++) {
41 if (sci_oem_parameters_validate(&orom->ctrl[i])) {
42 dev_warn(&pdev->dev,
43 "[%d]: invalid oem parameters detected, falling back to firmware\n", i);
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch
new file mode 100644
index 00000000..231e4307
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch
@@ -0,0 +1,69 @@
1From 193433aeaf9380a822cd4bf7f5777e70b2e86550 Mon Sep 17 00:00:00 2001
2From: Linus Torvalds <torvalds@linux-foundation.org>
3Date: Mon, 21 May 2012 12:52:42 -0700
4Subject: [PATCH 032/117] Fix blocking allocations called very early during
5 bootup
6
7commit 31a67102f4762df5544bc2dfb34a931233d2a5b2 upstream.
8
9During early boot, when the scheduler hasn't really been fully set up,
10we really can't do blocking allocations because with certain (dubious)
11configurations the "might_resched()" calls can actually result in
12scheduling events.
13
14We could just make such users always use GFP_ATOMIC, but quite often the
15code that does the allocation isn't really aware of the fact that the
16scheduler isn't up yet, and forcing that kind of random knowledge on the
17initialization code is just annoying and not good for anybody.
18
19And we actually have a the 'gfp_allowed_mask' exactly for this reason:
20it's just that the kernel init sequence happens to set it to allow
21blocking allocations much too early.
22
23So move the 'gfp_allowed_mask' initialization from 'start_kernel()'
24(which is some of the earliest init code, and runs with preemption
25disabled for good reasons) into 'kernel_init()'. kernel_init() is run
26in the newly created thread that will become the 'init' process, as
27opposed to the early startup code that runs within the context of what
28will be the first idle thread.
29
30So by the time we reach 'kernel_init()', we know that the scheduler must
31be at least limping along, because we've already scheduled from the idle
32thread into the init thread.
33
34Reported-by: Steven Rostedt <rostedt@goodmis.org>
35Cc: David Rientjes <rientjes@google.com>
36Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
37Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
38---
39 init/main.c | 7 ++++---
40 1 file changed, 4 insertions(+), 3 deletions(-)
41
42diff --git a/init/main.c b/init/main.c
43index 217ed23..cb08fea2 100644
44--- a/init/main.c
45+++ b/init/main.c
46@@ -563,9 +563,6 @@ asmlinkage void __init start_kernel(void)
47 early_boot_irqs_disabled = false;
48 local_irq_enable();
49
50- /* Interrupts are enabled now so all GFP allocations are safe. */
51- gfp_allowed_mask = __GFP_BITS_MASK;
52-
53 kmem_cache_init_late();
54
55 /*
56@@ -798,6 +795,10 @@ static int __init kernel_init(void * unused)
57 * Wait until kthreadd is all set-up.
58 */
59 wait_for_completion(&kthreadd_done);
60+
61+ /* Now the scheduler is fully set up and can do blocking allocations */
62+ gfp_allowed_mask = __GFP_BITS_MASK;
63+
64 /*
65 * init can allocate pages on any node
66 */
67--
681.7.9.5
69
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch
new file mode 100644
index 00000000..e496eb2a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch
@@ -0,0 +1,109 @@
1From 078dda1f3c0c180fc5d408f9f087752a0afbed3f Mon Sep 17 00:00:00 2001
2From: Linus Torvalds <torvalds@linux-foundation.org>
3Date: Mon, 21 May 2012 16:06:20 -0700
4Subject: [PATCH 033/117] vfs: make AIO use the proper rw_verify_area() area
5 helpers
6
7commit a70b52ec1aaeaf60f4739edb1b422827cb6f3893 upstream.
8
9We had for some reason overlooked the AIO interface, and it didn't use
10the proper rw_verify_area() helper function that checks (for example)
11mandatory locking on the file, and that the size of the access doesn't
12cause us to overflow the provided offset limits etc.
13
14Instead, AIO did just the security_file_permission() thing (that
15rw_verify_area() also does) directly.
16
17This fixes it to do all the proper helper functions, which not only
18means that now mandatory file locking works with AIO too, we can
19actually remove lines of code.
20
21Reported-by: Manish Honap <manish_honap_vit@yahoo.co.in>
22Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 fs/aio.c | 30 ++++++++++++++----------------
26 1 file changed, 14 insertions(+), 16 deletions(-)
27
28diff --git a/fs/aio.c b/fs/aio.c
29index b9d64d8..3b65ee7 100644
30--- a/fs/aio.c
31+++ b/fs/aio.c
32@@ -1477,6 +1477,10 @@ static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat)
33 if (ret < 0)
34 goto out;
35
36+ ret = rw_verify_area(type, kiocb->ki_filp, &kiocb->ki_pos, ret);
37+ if (ret < 0)
38+ goto out;
39+
40 kiocb->ki_nr_segs = kiocb->ki_nbytes;
41 kiocb->ki_cur_seg = 0;
42 /* ki_nbytes/left now reflect bytes instead of segs */
43@@ -1488,11 +1492,17 @@ out:
44 return ret;
45 }
46
47-static ssize_t aio_setup_single_vector(struct kiocb *kiocb)
48+static ssize_t aio_setup_single_vector(int type, struct file * file, struct kiocb *kiocb)
49 {
50+ int bytes;
51+
52+ bytes = rw_verify_area(type, file, &kiocb->ki_pos, kiocb->ki_left);
53+ if (bytes < 0)
54+ return bytes;
55+
56 kiocb->ki_iovec = &kiocb->ki_inline_vec;
57 kiocb->ki_iovec->iov_base = kiocb->ki_buf;
58- kiocb->ki_iovec->iov_len = kiocb->ki_left;
59+ kiocb->ki_iovec->iov_len = bytes;
60 kiocb->ki_nr_segs = 1;
61 kiocb->ki_cur_seg = 0;
62 return 0;
63@@ -1517,10 +1527,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
64 if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf,
65 kiocb->ki_left)))
66 break;
67- ret = security_file_permission(file, MAY_READ);
68- if (unlikely(ret))
69- break;
70- ret = aio_setup_single_vector(kiocb);
71+ ret = aio_setup_single_vector(READ, file, kiocb);
72 if (ret)
73 break;
74 ret = -EINVAL;
75@@ -1535,10 +1542,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
76 if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf,
77 kiocb->ki_left)))
78 break;
79- ret = security_file_permission(file, MAY_WRITE);
80- if (unlikely(ret))
81- break;
82- ret = aio_setup_single_vector(kiocb);
83+ ret = aio_setup_single_vector(WRITE, file, kiocb);
84 if (ret)
85 break;
86 ret = -EINVAL;
87@@ -1549,9 +1553,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
88 ret = -EBADF;
89 if (unlikely(!(file->f_mode & FMODE_READ)))
90 break;
91- ret = security_file_permission(file, MAY_READ);
92- if (unlikely(ret))
93- break;
94 ret = aio_setup_vectored_rw(READ, kiocb, compat);
95 if (ret)
96 break;
97@@ -1563,9 +1564,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat)
98 ret = -EBADF;
99 if (unlikely(!(file->f_mode & FMODE_WRITE)))
100 break;
101- ret = security_file_permission(file, MAY_WRITE);
102- if (unlikely(ret))
103- break;
104 ret = aio_setup_vectored_rw(WRITE, kiocb, compat);
105 if (ret)
106 break;
107--
1081.7.9.5
109
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch
new file mode 100644
index 00000000..2539418e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch
@@ -0,0 +1,100 @@
1From d2c7de1fefbc917e3731bf69e18b553b3c7a165f Mon Sep 17 00:00:00 2001
2From: Kees Cook <keescook@chromium.org>
3Date: Wed, 18 Apr 2012 23:16:45 -0700
4Subject: [PATCH 034/117] docs: update HOWTO for 2.6.x -> 3.x versioning
5
6commit 591bfc6bf9e5e25e464fd4c87d64afd5135667c4 upstream.
7
8The HOWTO document needed updating for the new kernel versioning. The
9git URI for -next was updated as well.
10
11Signed-off-by: Kees Cook <keescook@chromium.org>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 Documentation/HOWTO | 32 ++++++++++++++++----------------
16 1 file changed, 16 insertions(+), 16 deletions(-)
17
18diff --git a/Documentation/HOWTO b/Documentation/HOWTO
19index f7ade3b..59c080f 100644
20--- a/Documentation/HOWTO
21+++ b/Documentation/HOWTO
22@@ -218,16 +218,16 @@ The development process
23 Linux kernel development process currently consists of a few different
24 main kernel "branches" and lots of different subsystem-specific kernel
25 branches. These different branches are:
26- - main 2.6.x kernel tree
27- - 2.6.x.y -stable kernel tree
28- - 2.6.x -git kernel patches
29+ - main 3.x kernel tree
30+ - 3.x.y -stable kernel tree
31+ - 3.x -git kernel patches
32 - subsystem specific kernel trees and patches
33- - the 2.6.x -next kernel tree for integration tests
34+ - the 3.x -next kernel tree for integration tests
35
36-2.6.x kernel tree
37+3.x kernel tree
38 -----------------
39-2.6.x kernels are maintained by Linus Torvalds, and can be found on
40-kernel.org in the pub/linux/kernel/v2.6/ directory. Its development
41+3.x kernels are maintained by Linus Torvalds, and can be found on
42+kernel.org in the pub/linux/kernel/v3.x/ directory. Its development
43 process is as follows:
44 - As soon as a new kernel is released a two weeks window is open,
45 during this period of time maintainers can submit big diffs to
46@@ -262,20 +262,20 @@ mailing list about kernel releases:
47 released according to perceived bug status, not according to a
48 preconceived timeline."
49
50-2.6.x.y -stable kernel tree
51+3.x.y -stable kernel tree
52 ---------------------------
53-Kernels with 4-part versions are -stable kernels. They contain
54+Kernels with 3-part versions are -stable kernels. They contain
55 relatively small and critical fixes for security problems or significant
56-regressions discovered in a given 2.6.x kernel.
57+regressions discovered in a given 3.x kernel.
58
59 This is the recommended branch for users who want the most recent stable
60 kernel and are not interested in helping test development/experimental
61 versions.
62
63-If no 2.6.x.y kernel is available, then the highest numbered 2.6.x
64+If no 3.x.y kernel is available, then the highest numbered 3.x
65 kernel is the current stable kernel.
66
67-2.6.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and
68+3.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and
69 are released as needs dictate. The normal release period is approximately
70 two weeks, but it can be longer if there are no pressing problems. A
71 security-related problem, instead, can cause a release to happen almost
72@@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree
73 documents what kinds of changes are acceptable for the -stable tree, and
74 how the release process works.
75
76-2.6.x -git patches
77+3.x -git patches
78 ------------------
79 These are daily snapshots of Linus' kernel tree which are managed in a
80 git repository (hence the name.) These patches are usually released
81@@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review,
82 accepted, or rejected. Most of these patchwork sites are listed at
83 http://patchwork.kernel.org/.
84
85-2.6.x -next kernel tree for integration tests
86+3.x -next kernel tree for integration tests
87 ---------------------------------------------
88-Before updates from subsystem trees are merged into the mainline 2.6.x
89+Before updates from subsystem trees are merged into the mainline 3.x
90 tree, they need to be integration-tested. For this purpose, a special
91 testing repository exists into which virtually all subsystem trees are
92 pulled on an almost daily basis:
93- http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git
94+ http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
95 http://linux.f-seidel.de/linux-next/pmwiki/
96
97 This way, the -next kernel gives a summary outlook onto what will be
98--
991.7.9.5
100
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch
new file mode 100644
index 00000000..0286930e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch
@@ -0,0 +1,34 @@
1From bf21ec2ca510b5e8d017ea1177ffa78a2fec5b93 Mon Sep 17 00:00:00 2001
2From: Julia Lawall <Julia.Lawall@lip6.fr>
3Date: Sun, 22 Apr 2012 13:37:09 +0200
4Subject: [PATCH 035/117] drivers/staging/comedi/comedi_fops.c: add missing
5 vfree
6
7commit abae41e6438b798e046d721b6ccdd55b4a398170 upstream.
8
9aux_free is freed on all other exits from the function. By removing the
10return, we can benefit from the vfree already at the end of the function.
11
12Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/staging/comedi/comedi_fops.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
20index 5e78c77..4ad2c0e 100644
21--- a/drivers/staging/comedi/comedi_fops.c
22+++ b/drivers/staging/comedi/comedi_fops.c
23@@ -280,7 +280,7 @@ static int do_devconfig_ioctl(struct comedi_device *dev,
24 if (ret == 0) {
25 if (!try_module_get(dev->driver->module)) {
26 comedi_device_detach(dev);
27- return -ENOSYS;
28+ ret = -ENOSYS;
29 }
30 }
31
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch
new file mode 100644
index 00000000..b1eb787d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch
@@ -0,0 +1,70 @@
1From a62e9c8e391b91bd60c705748ea8ec207ef72eab Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Thu, 10 Nov 2011 14:58:26 +0100
4Subject: [PATCH 036/117] USB: move usb_translate_errors to linux/usb.h
5
6commit 2c4d6bf295ae10ffcd84f0df6cb642598eb66603 upstream.
7
8Move usb_translate_errors from usb core to linux/usb.h as it is meant to
9be accessed from drivers.
10
11Signed-off-by: Johan Hovold <jhovold@gmail.com>
12Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/usb/core/usb.h | 14 --------------
16 include/linux/usb.h | 13 +++++++++++++
17 2 files changed, 13 insertions(+), 14 deletions(-)
18
19diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
20index 3888778..45e8479 100644
21--- a/drivers/usb/core/usb.h
22+++ b/drivers/usb/core/usb.h
23@@ -132,20 +132,6 @@ static inline int is_usb_device_driver(struct device_driver *drv)
24 for_devices;
25 }
26
27-/* translate USB error codes to codes user space understands */
28-static inline int usb_translate_errors(int error_code)
29-{
30- switch (error_code) {
31- case 0:
32- case -ENOMEM:
33- case -ENODEV:
34- return error_code;
35- default:
36- return -EIO;
37- }
38-}
39-
40-
41 /* for labeling diagnostics */
42 extern const char *usbcore_name;
43
44diff --git a/include/linux/usb.h b/include/linux/usb.h
45index 7626e5a..68cdc84 100644
46--- a/include/linux/usb.h
47+++ b/include/linux/usb.h
48@@ -1600,6 +1600,19 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
49
50 /* ----------------------------------------------------------------------- */
51
52+/* translate USB error codes to codes user space understands */
53+static inline int usb_translate_errors(int error_code)
54+{
55+ switch (error_code) {
56+ case 0:
57+ case -ENOMEM:
58+ case -ENODEV:
59+ return error_code;
60+ default:
61+ return -EIO;
62+ }
63+}
64+
65 /* Events from the usb core */
66 #define USB_DEVICE_ADD 0x0001
67 #define USB_DEVICE_REMOVE 0x0002
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch
new file mode 100644
index 00000000..bbb4964f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch
@@ -0,0 +1,33 @@
1From 1676590583666a41bf8b26924d0ab9b729455813 Mon Sep 17 00:00:00 2001
2From: Oliver Neukum <oliver@neukum.org>
3Date: Fri, 27 Apr 2012 14:23:54 +0200
4Subject: [PATCH 037/117] USB: cdc-wdm: sanitize error returns
5
6commit 24a85bae5da2b43fed423859c09c5a81ab359473 upstream.
7
8wdm_flush() returns unsanitized USB error codes.
9They must be cleaned up to before being anded to user space
10
11Signed-off-by: Oliver Neukum <oneukum@suse.de>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/usb/class/cdc-wdm.c | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
19index 2db0327..ac9099a 100644
20--- a/drivers/usb/class/cdc-wdm.c
21+++ b/drivers/usb/class/cdc-wdm.c
22@@ -500,7 +500,7 @@ static int wdm_flush(struct file *file, fl_owner_t id)
23 dev_err(&desc->intf->dev, "Error in flush path: %d\n",
24 desc->werr);
25
26- return desc->werr;
27+ return usb_translate_errors(desc->werr);
28 }
29
30 static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait)
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch
new file mode 100644
index 00000000..06dd85c0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch
@@ -0,0 +1,35 @@
1From bc51604d6cadd35fa7a9a4d70644471cb6ab81f8 Mon Sep 17 00:00:00 2001
2From: Oliver Neukum <oliver@neukum.org>
3Date: Fri, 27 Apr 2012 14:36:37 +0200
4Subject: [PATCH 038/117] USB: cdc-wdm: fix memory leak
5
6commit 2f338c8a1904e2e7aa5a8bd12fb0cf2422d17da4 upstream.
7
8cleanup() is not called if the last close() comes after
9disconnect(). That leads to a memory leak. Rectified
10by checking for an earlier disconnect() in release()
11
12Signed-off-by: Oliver Neukum <oneukum@suse.de>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14[bwh: Backported to 3.2: adjust context]
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/usb/class/cdc-wdm.c | 2 ++
18 1 file changed, 2 insertions(+)
19
20diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
21index ac9099a..cfe5be4 100644
22--- a/drivers/usb/class/cdc-wdm.c
23+++ b/drivers/usb/class/cdc-wdm.c
24@@ -590,6 +590,8 @@ static int wdm_release(struct inode *inode, struct file *file)
25 kill_urbs(desc);
26 if (!test_bit(WDM_DISCONNECTING, &desc->flags))
27 desc->intf->needs_remote_wakeup = 0;
28+ else
29+ cleanup(desc);
30 }
31 mutex_unlock(&wdm_mutex);
32 return 0;
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch
new file mode 100644
index 00000000..c895c803
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch
@@ -0,0 +1,102 @@
1From e90d4ef7a5801bf1e9c956edf51d22f6c8f33611 Mon Sep 17 00:00:00 2001
2From: Arnaud Patard <apatard@hupstream.com>
3Date: Wed, 25 Apr 2012 12:17:24 +0200
4Subject: [PATCH 039/117] 8250_pci: fix pch uart matching
5
6commit aaa10eb1d0034eccc096f583fe308f0921617598 upstream.
7
8The rules used to make 8250_pci "ignore" the PCH uarts are lacking pci subids
9entries, preventing it to match and thus is breaking serial port support for
10theses systems.
11
12This has been tested on a nanoETXexpress-TT, which has a specifici uart clock.
13
14Tested-by: Erwan Velu <Erwan.Velu@zodiacaerospace.com>
15Signed-off-by: Arnaud Patard <apatard@hupstream.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17[bwh: Backported to 3.2: adjust filename]
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/tty/serial/8250_pci.c | 18 ++++++++++++++++++
21 1 file changed, 18 insertions(+)
22
23diff --git a/drivers/tty/serial/8250_pci.c b/drivers/tty/serial/8250_pci.c
24index 825937a..482d51e 100644
25--- a/drivers/tty/serial/8250_pci.c
26+++ b/drivers/tty/serial/8250_pci.c
27@@ -1590,54 +1590,72 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
28 {
29 .vendor = PCI_VENDOR_ID_INTEL,
30 .device = 0x8811,
31+ .subvendor = PCI_ANY_ID,
32+ .subdevice = PCI_ANY_ID,
33 .init = pci_eg20t_init,
34 .setup = pci_default_setup,
35 },
36 {
37 .vendor = PCI_VENDOR_ID_INTEL,
38 .device = 0x8812,
39+ .subvendor = PCI_ANY_ID,
40+ .subdevice = PCI_ANY_ID,
41 .init = pci_eg20t_init,
42 .setup = pci_default_setup,
43 },
44 {
45 .vendor = PCI_VENDOR_ID_INTEL,
46 .device = 0x8813,
47+ .subvendor = PCI_ANY_ID,
48+ .subdevice = PCI_ANY_ID,
49 .init = pci_eg20t_init,
50 .setup = pci_default_setup,
51 },
52 {
53 .vendor = PCI_VENDOR_ID_INTEL,
54 .device = 0x8814,
55+ .subvendor = PCI_ANY_ID,
56+ .subdevice = PCI_ANY_ID,
57 .init = pci_eg20t_init,
58 .setup = pci_default_setup,
59 },
60 {
61 .vendor = 0x10DB,
62 .device = 0x8027,
63+ .subvendor = PCI_ANY_ID,
64+ .subdevice = PCI_ANY_ID,
65 .init = pci_eg20t_init,
66 .setup = pci_default_setup,
67 },
68 {
69 .vendor = 0x10DB,
70 .device = 0x8028,
71+ .subvendor = PCI_ANY_ID,
72+ .subdevice = PCI_ANY_ID,
73 .init = pci_eg20t_init,
74 .setup = pci_default_setup,
75 },
76 {
77 .vendor = 0x10DB,
78 .device = 0x8029,
79+ .subvendor = PCI_ANY_ID,
80+ .subdevice = PCI_ANY_ID,
81 .init = pci_eg20t_init,
82 .setup = pci_default_setup,
83 },
84 {
85 .vendor = 0x10DB,
86 .device = 0x800C,
87+ .subvendor = PCI_ANY_ID,
88+ .subdevice = PCI_ANY_ID,
89 .init = pci_eg20t_init,
90 .setup = pci_default_setup,
91 },
92 {
93 .vendor = 0x10DB,
94 .device = 0x800D,
95+ .subvendor = PCI_ANY_ID,
96+ .subdevice = PCI_ANY_ID,
97 .init = pci_eg20t_init,
98 .setup = pci_default_setup,
99 },
100--
1011.7.9.5
102
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch
new file mode 100644
index 00000000..5d78e491
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch
@@ -0,0 +1,36 @@
1From aa66cb26f7b032f3ae43ff3cb126b3a3cff9b151 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Steffen=20M=C3=BCller?= <steffen.mueller@radio-frei.de>
3Date: Mon, 30 Apr 2012 13:05:34 +0200
4Subject: [PATCH 040/117] usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 166cb70e97bd83d7ae9bbec6ae59a178fd9bb823 upstream.
10
11Tested-by: Steffen Müller <steffen.mueller@radio-frei.de>
12Signed-off-by: Steffen Müller <steffen.mueller@radio-frei.de>
13Signed-off-by: Stefan Seyfried <seife+kernel@b1-systems.com>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/usb/core/quirks.c | 3 +++
18 1 file changed, 3 insertions(+)
19
20diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
21index 4c65eb6..32d3adc 100644
22--- a/drivers/usb/core/quirks.c
23+++ b/drivers/usb/core/quirks.c
24@@ -123,6 +123,9 @@ static const struct usb_device_id usb_quirk_list[] = {
25 /* Guillemot Webcam Hercules Dualpix Exchange*/
26 { USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
27
28+ /* Midiman M-Audio Keystation 88es */
29+ { USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
30+
31 /* M-Systems Flash Disk Pioneers */
32 { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
33
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch
new file mode 100644
index 00000000..2bc330a9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch
@@ -0,0 +1,60 @@
1From bb6dfbca863a06884b7af33a6c46fddb690eb7d3 Mon Sep 17 00:00:00 2001
2From: Paul Zimmerman <Paul.Zimmerman@synopsys.com>
3Date: Mon, 16 Apr 2012 14:19:07 -0700
4Subject: [PATCH 041/117] usb: usbtest: two super speed fixes for usbtest
5
6commit 6a23ccd216b6a8ba2c67a9f9d8969b4431ad2920 upstream.
7
8bMaxPacketSize0 field for super speed is a power of 2, not a count.
9The size itself is always 512.
10
11Max packet size for a super speed bulk endpoint is 1024, so
12allocate the urb size in halt_simple() accordingly.
13
14Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
15Acked-by: Felipe Balbi <balbi@ti.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/usb/misc/usbtest.c | 17 ++++++++++++-----
20 1 file changed, 12 insertions(+), 5 deletions(-)
21
22diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
23index bd6d008..b9ac9a3 100644
24--- a/drivers/usb/misc/usbtest.c
25+++ b/drivers/usb/misc/usbtest.c
26@@ -1025,7 +1025,10 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param)
27 case 13: /* short read, resembling case 10 */
28 req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0);
29 /* last data packet "should" be DATA1, not DATA0 */
30- len = 1024 - udev->descriptor.bMaxPacketSize0;
31+ if (udev->speed == USB_SPEED_SUPER)
32+ len = 1024 - 512;
33+ else
34+ len = 1024 - udev->descriptor.bMaxPacketSize0;
35 expected = -EREMOTEIO;
36 break;
37 case 14: /* short read; try to fill the last packet */
38@@ -1384,11 +1387,15 @@ static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb)
39
40 static int halt_simple(struct usbtest_dev *dev)
41 {
42- int ep;
43- int retval = 0;
44- struct urb *urb;
45+ int ep;
46+ int retval = 0;
47+ struct urb *urb;
48+ struct usb_device *udev = testdev_to_usbdev(dev);
49
50- urb = simple_alloc_urb(testdev_to_usbdev(dev), 0, 512);
51+ if (udev->speed == USB_SPEED_SUPER)
52+ urb = simple_alloc_urb(udev, 0, 1024);
53+ else
54+ urb = simple_alloc_urb(udev, 0, 512);
55 if (urb == NULL)
56 return -ENOMEM;
57
58--
591.7.9.5
60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch
new file mode 100644
index 00000000..1c7547e6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch
@@ -0,0 +1,51 @@
1From 52c1820cb4b5f10c0664104bb6f570305d0c49cc Mon Sep 17 00:00:00 2001
2From: Christian Melki <christian.melki@ericsson.se>
3Date: Mon, 30 Apr 2012 11:21:26 +0200
4Subject: [PATCH 042/117] 8250.c: less than 2400 baud fix.
5
6commit f9a9111b540fd67db5dab332f4b83d86c90e27b1 upstream.
7
8We noticed that we were loosing data at speed less than 2400 baud.
9It turned out our (TI16750 compatible) uart with 64 byte outgoing fifo
10was truncated to 16 byte (bit 5 sets fifo len) when modifying the fcr
11reg.
12The input code still fills the buffer with 64 bytes if I remember
13correctly and thus data is lost.
14Our fix was to remove whiping of the fcr content and just add the
15TRIGGER_1 which we want for latency.
16I can't see why this would not work on less than 2400 always, for all
17uarts ...
18Otherwise one would have to make sure the filling of the fifo re-checks
19the current state of available fifo size (urrk).
20
21Signed-off-by: Christian Melki <christian.melki@ericsson.se>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23[bwh: Backported to 3.2: adjust filename; replace *port with up->port]
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/tty/serial/8250.c | 9 +++++----
27 1 file changed, 5 insertions(+), 4 deletions(-)
28
29diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
30index eeadf1b..70585b6 100644
31--- a/drivers/tty/serial/8250.c
32+++ b/drivers/tty/serial/8250.c
33@@ -2327,10 +2327,11 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
34 quot++;
35
36 if (up->capabilities & UART_CAP_FIFO && up->port.fifosize > 1) {
37- if (baud < 2400)
38- fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1;
39- else
40- fcr = uart_config[up->port.type].fcr;
41+ fcr = uart_config[up->port.type].fcr;
42+ if (baud < 2400) {
43+ fcr &= ~UART_FCR_TRIGGER_MASK;
44+ fcr |= UART_FCR_TRIGGER_1;
45+ }
46 }
47
48 /*
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch
new file mode 100644
index 00000000..ce641a41
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch
@@ -0,0 +1,49 @@
1From 5ccddedea273a8a59eda8f3a7ad026d0751ada3d Mon Sep 17 00:00:00 2001
2From: Hans de Goede <hdegoede@redhat.com>
3Date: Mon, 23 Apr 2012 15:06:09 +0200
4Subject: [PATCH 043/117] usb-xhci: Handle COMP_TX_ERR for isoc tds
5
6commit 9c745995ae5c4ff787f34a359de908facc11ee00 upstream.
7
8While testing unplugging an UVC HD webcam with usb-redirection (so through
9usbdevfs), my userspace usb-redir code was getting a value of -1 in
10iso_frame_desc[n].status, which according to Documentation/usb/error-codes.txt
11is not a valid value.
12
13The source of this -1 is the default case in xhci-ring.c:process_isoc_td()
14adding a kprintf there showed the value of trb_comp_code to be COMP_TX_ERR
15in this case, so this patch adds handling for that completion code to
16process_isoc_td().
17
18This was observed and tested with the following xhci controller:
191033:0194 NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
20
21Note: I also wonder if setting frame->status to -1 (-EPERM) is the best we can
22do, but since I cannot come up with anything better I've left that as is.
23
24This patch should be backported to kernels as old as 2.6.36, which contain the
25commit 04e51901dd44f40a5a385ced897f6bca87d5f40a "USB: xHCI: Isochronous
26transfer implementation".
27
28Signed-off-by: Hans de Goede <hdegoede@redhat.com>
29Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
30Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
31---
32 drivers/usb/host/xhci-ring.c | 1 +
33 1 file changed, 1 insertion(+)
34
35diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
36index 43b3447..2304c45 100644
37--- a/drivers/usb/host/xhci-ring.c
38+++ b/drivers/usb/host/xhci-ring.c
39@@ -1752,6 +1752,7 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
40 break;
41 case COMP_DEV_ERR:
42 case COMP_STALL:
43+ case COMP_TX_ERR:
44 frame->status = -EPROTO;
45 skip_td = true;
46 break;
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch
new file mode 100644
index 00000000..eaa0ec55
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch
@@ -0,0 +1,63 @@
1From 48a73f4c8ba6d9e5587a29aa4f9710f405a28cc7 Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Mon, 16 Apr 2012 10:56:47 -0700
4Subject: [PATCH 044/117] xhci: Avoid dead ports when CONFIG_USB_XHCI_HCD=n
5
6commit 51c9e6c7732b67769c0a514d31f505e49fa82dd4 upstream.
7
8If the user chooses to say "no" to CONFIG_USB_XHCI_HCD on a system
9with an Intel Panther Point chipset, the PCI quirks code or the EHCI
10driver will switch the ports over to the xHCI host, but the xHCI driver
11will never load. The ports will be powered off and seem "dead" to the
12user.
13
14Fix this by only switching the ports over if CONFIG_USB_XHCI_HCD is
15either compiled in, or compiled as a module.
16
17This patch should be backported to stable kernels as old as 3.0,
18that contain commit 69e848c2090aebba5698a1620604c7dccb448684
19"Intel xhci: Support EHCI/xHCI port switching."
20
21Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
22Reported-by: Eric Anholt <eric.anholt@intel.com>
23Reported-by: David Bein <d.bein@f5.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/usb/host/pci-quirks.c | 14 ++++++++++++++
27 1 file changed, 14 insertions(+)
28
29diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
30index 2afff88..a33362b 100644
31--- a/drivers/usb/host/pci-quirks.c
32+++ b/drivers/usb/host/pci-quirks.c
33@@ -9,6 +9,7 @@
34 */
35
36 #include <linux/types.h>
37+#include <linux/kconfig.h>
38 #include <linux/kernel.h>
39 #include <linux/pci.h>
40 #include <linux/init.h>
41@@ -742,6 +743,19 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev)
42 {
43 u32 ports_available;
44
45+ /* Don't switchover the ports if the user hasn't compiled the xHCI
46+ * driver. Otherwise they will see "dead" USB ports that don't power
47+ * the devices.
48+ */
49+ if (!IS_ENABLED(CONFIG_USB_XHCI_HCD)) {
50+ dev_warn(&xhci_pdev->dev,
51+ "CONFIG_USB_XHCI_HCD is turned off, "
52+ "defaulting to EHCI.\n");
53+ dev_warn(&xhci_pdev->dev,
54+ "USB 3.0 devices will work at USB 2.0 speeds.\n");
55+ return;
56+ }
57+
58 ports_available = 0xffffffff;
59 /* Write USB3_PSSEN, the USB 3.0 Port SuperSpeed Enable
60 * Register, to turn on SuperSpeed terminations for all
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch
new file mode 100644
index 00000000..2bd8bcd3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch
@@ -0,0 +1,81 @@
1From cc4326a34985d9ce41cd590e7cf7275a0fbaa9dd Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Thu, 9 Feb 2012 15:55:13 -0800
4Subject: [PATCH 045/117] xhci: Add Lynx Point to list of Intel switchable
5 hosts.
6
7commit 1c12443ab8eba71a658fae4572147e56d1f84f66 upstream.
8
9The upcoming Intel Lynx Point chipset includes an xHCI host controller
10that can have ports switched from the EHCI host controller, just like
11the Intel Panther Point xHCI host. This time, ports from both EHCI
12hosts can be switched to the xHCI host controller. The PCI config
13registers to do the port switching are in the exact same place in the
14xHCI PCI configuration registers, with the same semantics.
15
16Hooray for shipping patches for next-gen hardware before the current gen
17hardware is even available for purchase!
18
19This patch should be backported to stable kernels as old as 3.0,
20that contain commit 69e848c2090aebba5698a1620604c7dccb448684
21"Intel xhci: Support EHCI/xHCI port switching."
22
23Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/usb/host/ehci-pci.c | 4 +++-
27 drivers/usb/host/pci-quirks.c | 18 +++++++++++++++++-
28 2 files changed, 20 insertions(+), 2 deletions(-)
29
30diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
31index 971d312..ee85e81 100644
32--- a/drivers/usb/host/ehci-pci.c
33+++ b/drivers/usb/host/ehci-pci.c
34@@ -365,7 +365,9 @@ static bool usb_is_intel_switchable_ehci(struct pci_dev *pdev)
35 {
36 return pdev->class == PCI_CLASS_SERIAL_USB_EHCI &&
37 pdev->vendor == PCI_VENDOR_ID_INTEL &&
38- pdev->device == 0x1E26;
39+ (pdev->device == 0x1E26 ||
40+ pdev->device == 0x8C2D ||
41+ pdev->device == 0x8C26);
42 }
43
44 static void ehci_enable_xhci_companion(void)
45diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
46index a33362b..833b3c6 100644
47--- a/drivers/usb/host/pci-quirks.c
48+++ b/drivers/usb/host/pci-quirks.c
49@@ -713,12 +713,28 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done,
50 return -ETIMEDOUT;
51 }
52
53-bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
54+#define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31
55+
56+bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev)
57 {
58 return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
59 pdev->vendor == PCI_VENDOR_ID_INTEL &&
60 pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI;
61 }
62+
63+/* The Intel Lynx Point chipset also has switchable ports. */
64+bool usb_is_intel_lpt_switchable_xhci(struct pci_dev *pdev)
65+{
66+ return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
67+ pdev->vendor == PCI_VENDOR_ID_INTEL &&
68+ pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI;
69+}
70+
71+bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
72+{
73+ return usb_is_intel_ppt_switchable_xhci(pdev) ||
74+ usb_is_intel_lpt_switchable_xhci(pdev);
75+}
76 EXPORT_SYMBOL_GPL(usb_is_intel_switchable_xhci);
77
78 /*
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch
new file mode 100644
index 00000000..5e46323a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch
@@ -0,0 +1,44 @@
1From 45bf78829065725fa73b4cacfaf2a2142056d301 Mon Sep 17 00:00:00 2001
2From: Peter Chen <peter.chen@freescale.com>
3Date: Sun, 1 Apr 2012 15:17:16 +0800
4Subject: [PATCH 046/117] usb: gadget: fsl_udc_core: dTD's next dtd pointer
5 need to be updated once written
6
7commit 4d0947dec4db1224354e2f6f00ae22ce38e62a43 upstream.
8
9dTD's next dtd pointer need to be updated once CPU writes it, or this
10request may not be handled by controller, then host will get NAK from
11device forever.
12
13This problem occurs when there is a request is handling, we need to add
14a new request to dTD list, if this new request is added before the current
15one is finished, the new request is intended to added as next dtd pointer
16at current dTD, but without wmb(), the dTD's next dtd pointer may not be
17updated when the controller reads it. In that case, the controller will
18still get Terminate Bit is 1 at dTD's next dtd pointer, that means there is
19no next request, then this new request is missed by controller.
20
21Signed-off-by: Peter Chen <peter.chen@freescale.com>
22Acked-by: Li Yang <leoli@freescale.com>
23Signed-off-by: Felipe Balbi <balbi@ti.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/usb/gadget/fsl_udc_core.c | 2 ++
27 1 file changed, 2 insertions(+)
28
29diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
30index 9085d14..185db03 100644
31--- a/drivers/usb/gadget/fsl_udc_core.c
32+++ b/drivers/usb/gadget/fsl_udc_core.c
33@@ -736,6 +736,8 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req)
34 lastreq = list_entry(ep->queue.prev, struct fsl_req, queue);
35 lastreq->tail->next_td_ptr =
36 cpu_to_hc32(req->head->td_dma & DTD_ADDR_MASK);
37+ /* Ensure dTD's next dtd pointer to be updated */
38+ wmb();
39 /* Read prime bit, if 1 goto done */
40 if (fsl_readl(&dr_regs->endpointprime) & bitmask)
41 return;
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch
new file mode 100644
index 00000000..9c150815
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch
@@ -0,0 +1,36 @@
1From 17e2d3e18d2042fb6fb23605752754deb87772c5 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= <LW@KARO-electronics.de>
3Date: Thu, 3 May 2012 11:37:12 +0200
4Subject: [PATCH 047/117] Add missing call to uart_update_timeout()
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 8b979f7c6bf13a57e7b6002f1175312a44773960 upstream.
10
11This patch fixes a problem reported here:
12http://article.gmane.org/gmane.linux.ports.arm.kernel/155242/match=auart
13
14Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/tty/serial/mxs-auart.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
22index 7e02c9c..5b3d063 100644
23--- a/drivers/tty/serial/mxs-auart.c
24+++ b/drivers/tty/serial/mxs-auart.c
25@@ -368,6 +368,8 @@ static void mxs_auart_settermios(struct uart_port *u,
26
27 writel(ctrl, u->membase + AUART_LINECTRL);
28 writel(ctrl2, u->membase + AUART_CTRL2);
29+
30+ uart_update_timeout(u, termios->c_cflag, baud);
31 }
32
33 static irqreturn_t mxs_auart_irq_handle(int irq, void *context)
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch
new file mode 100644
index 00000000..493344b4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch
@@ -0,0 +1,58 @@
1From 52bf48eda8302a253e63ac9ec069a1635932b237 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?=C3=89ric=20Piel?= <piel@delmic.com>
3Date: Mon, 7 May 2012 12:37:54 +0200
4Subject: [PATCH 048/117] USB: ftdi-sio: add support for Physik Instrumente
5 E-861
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit b69cc672052540e8efb1368420f10d7d4d8b8a3d upstream.
11
12This adds VID/PID for the PI E-861. Without it, I had to do:
13modprobe -q ftdi-sio product=0x1008 vendor=0x1a72
14
15http://www.physikinstrumente.com/en/products/prdetail.php?sortnr=900610
16
17Signed-off-by: Éric Piel <piel@delmic.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/usb/serial/ftdi_sio.c | 1 +
22 drivers/usb/serial/ftdi_sio_ids.h | 8 ++++++++
23 2 files changed, 9 insertions(+)
24
25diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
26index c4cf3f3..450bdfe 100644
27--- a/drivers/usb/serial/ftdi_sio.c
28+++ b/drivers/usb/serial/ftdi_sio.c
29@@ -809,6 +809,7 @@ static struct usb_device_id id_table_combined [] = {
30 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
31 { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) },
32 { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) },
33+ { USB_DEVICE(PI_VID, PI_E861_PID) },
34 { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
35 { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
36 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
37diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
38index c6dd18e..219b199 100644
39--- a/drivers/usb/serial/ftdi_sio_ids.h
40+++ b/drivers/usb/serial/ftdi_sio_ids.h
41@@ -785,6 +785,14 @@
42 #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */
43 #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */
44
45+
46+/*
47+ * Physik Instrumente
48+ * http://www.physikinstrumente.com/en/products/
49+ */
50+#define PI_VID 0x1a72 /* Vendor ID */
51+#define PI_E861_PID 0x1008 /* E-861 piezo controller USB connection */
52+
53 /*
54 * Bayer Ascensia Contour blood glucose meter USB-converter cable.
55 * http://winglucofacts.com/cables/
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch
new file mode 100644
index 00000000..81f1eb11
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch
@@ -0,0 +1,36 @@
1From 7041c376790f592d9ed3c6b88a44a6cf18b8423c Mon Sep 17 00:00:00 2001
2From: Matthias Fend <Matthias.Fend@wolfvision.net>
3Date: Mon, 7 May 2012 14:37:30 +0200
4Subject: [PATCH 049/117] USB: ffs-test: fix length argument of out function
5 call
6
7commit eb9c5836384cd2a276254df6254ed71117983626 upstream.
8
9The out functions should only handle actual available data instead of the complete buffer.
10Otherwise for example the ep0_consume function will report ghost events since it tries to decode
11the complete buffer - which may contain partly invalid data.
12
13Signed-off-by: Matthias Fend <matthias.fend@wolfvision.net>
14Acked-by: Michal Nazarewicz <mina86@mina86.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 tools/usb/ffs-test.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c
22index b9c7986..f17dfee 100644
23--- a/tools/usb/ffs-test.c
24+++ b/tools/usb/ffs-test.c
25@@ -324,7 +324,7 @@ static void *start_thread_helper(void *arg)
26
27 ret = t->in(t, t->buf, t->buf_size);
28 if (ret > 0) {
29- ret = t->out(t, t->buf, t->buf_size);
30+ ret = t->out(t, t->buf, ret);
31 name = out_name;
32 op = "write";
33 } else {
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch
new file mode 100644
index 00000000..c5f666a3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch
@@ -0,0 +1,60 @@
1From 0842fcae9a509f08c6d540dfa4d3f097c4f3f92d Mon Sep 17 00:00:00 2001
2From: David Herrmann <dh.herrmann@googlemail.com>
3Date: Tue, 8 May 2012 16:52:31 +0200
4Subject: [PATCH 050/117] HID: wiimote: Fix IR data parser
5
6commit 74b89e8a3625c17c7452532dfb997ac4f1a38751 upstream.
7
8We incorrectly parse incoming IR data. The extra byte contains the upper
9bits and not the lower bits of the x/y coordinates. User-space expects
10absolute position data from us so this patch does not break existing
11applications. On the contrary, it extends the virtual view and fixes
12garbage reports for margin areas of the virtual screen.
13
14Reported-by: Peter Bukovsky <bukovsky.peter@gmail.com>
15Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
16Signed-off-by: Jiri Kosina <jkosina@suse.cz>
17[bwh: Backported to 3.2: adjust filename]
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/hid/hid-wiimote.c | 16 +++++-----------
21 1 file changed, 5 insertions(+), 11 deletions(-)
22
23diff --git a/drivers/hid/hid-wiimote.c b/drivers/hid/hid-wiimote.c
24index 76739c0..bfa9a27 100644
25--- a/drivers/hid/hid-wiimote.c
26+++ b/drivers/hid/hid-wiimote.c
27@@ -829,7 +829,7 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
28
29 /*
30 * Basic IR data is encoded into 3 bytes. The first two bytes are the
31- * upper 8 bit of the X/Y data, the 3rd byte contains the lower 2 bits
32+ * lower 8 bit of the X/Y data, the 3rd byte contains the upper 2 bits
33 * of both.
34 * If data is packed, then the 3rd byte is put first and slightly
35 * reordered. This allows to interleave packed and non-packed data to
36@@ -838,17 +838,11 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
37 */
38
39 if (packed) {
40- x = ir[1] << 2;
41- y = ir[2] << 2;
42-
43- x |= ir[0] & 0x3;
44- y |= (ir[0] >> 2) & 0x3;
45+ x = ir[1] | ((ir[0] & 0x03) << 8);
46+ y = ir[2] | ((ir[0] & 0x0c) << 6);
47 } else {
48- x = ir[0] << 2;
49- y = ir[1] << 2;
50-
51- x |= (ir[2] >> 4) & 0x3;
52- y |= (ir[2] >> 6) & 0x3;
53+ x = ir[0] | ((ir[2] & 0x30) << 4);
54+ y = ir[1] | ((ir[2] & 0xc0) << 2);
55 }
56
57 input_report_abs(wdata->ir, xid, x);
58--
591.7.9.5
60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch
new file mode 100644
index 00000000..6a9b5d95
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch
@@ -0,0 +1,41 @@
1From a595c200511d66729bc55aadbb93adb96988c590 Mon Sep 17 00:00:00 2001
2From: Alan Stern <stern@rowland.harvard.edu>
3Date: Tue, 8 May 2012 15:15:25 -0400
4Subject: [PATCH 051/117] usb-storage: unusual_devs entry for Yarvik PMP400
5 MP4 player
6
7commit df767b71e5816692134d59c0c17e0f77cd73333d upstream.
8
9This patch (as1553) adds an unusual_dev entrie for the Yarvik PMP400
10MP4 music player.
11
12Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
13Reported-by: Jesse Feddema <jdfeddema@gmail.com>
14Tested-by: Jesse Feddema <jdfeddema@gmail.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/usb/storage/unusual_devs.h | 7 +++++++
19 1 file changed, 7 insertions(+)
20
21diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
22index 24caba7..591f57f 100644
23--- a/drivers/usb/storage/unusual_devs.h
24+++ b/drivers/usb/storage/unusual_devs.h
25@@ -1885,6 +1885,13 @@ UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
26 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
27 US_FL_IGNORE_RESIDUE ),
28
29+/* Reported by Jesse Feddema <jdfeddema@gmail.com> */
30+UNUSUAL_DEV( 0x177f, 0x0400, 0x0000, 0x0000,
31+ "Yarvik",
32+ "PMP400",
33+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
34+ US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ),
35+
36 /* Reported by Hans de Goede <hdegoede@redhat.com>
37 * These Appotech controllers are found in Picture Frames, they provide a
38 * (buggy) emulation of a cdrom drive which contains the windows software
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch
new file mode 100644
index 00000000..3f380bb0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch
@@ -0,0 +1,63 @@
1From ac7728e7d633262cd020d764404abf381f282d12 Mon Sep 17 00:00:00 2001
2From: Nicolas Ferre <nicolas.ferre@atmel.com>
3Date: Wed, 9 May 2012 10:48:54 +0200
4Subject: [PATCH 052/117] USB: ohci-at91: add a reset function to fix race
5 condition
6
7commit 07e4e556eff4938eb2edf2591de3aa7d7fb82b52 upstream.
8
9A possible race condition appears because we are not initializing
10the ohci->regs before calling usb_hcd_request_irqs().
11We move the call to ohci_init() in hcd->driver->reset() instead of
12hcd->driver->start() to fix this.
13This was experienced when we share the same IRQ line between OHCI and EHCI
14controllers.
15
16Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
17Tested-by: Christian Eggers <christian.eggers@kathrein.de>
18Acked-by: Alan Stern <stern@rowland.harvard.edu>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/usb/host/ohci-at91.c | 11 ++++++++++-
23 1 file changed, 10 insertions(+), 1 deletion(-)
24
25diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
26index 95a9fec..a60c7aa 100644
27--- a/drivers/usb/host/ohci-at91.c
28+++ b/drivers/usb/host/ohci-at91.c
29@@ -199,7 +199,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
30 /*-------------------------------------------------------------------------*/
31
32 static int __devinit
33-ohci_at91_start (struct usb_hcd *hcd)
34+ohci_at91_reset (struct usb_hcd *hcd)
35 {
36 struct at91_usbh_data *board = hcd->self.controller->platform_data;
37 struct ohci_hcd *ohci = hcd_to_ohci (hcd);
38@@ -209,6 +209,14 @@ ohci_at91_start (struct usb_hcd *hcd)
39 return ret;
40
41 ohci->num_ports = board->ports;
42+ return 0;
43+}
44+
45+static int __devinit
46+ohci_at91_start (struct usb_hcd *hcd)
47+{
48+ struct ohci_hcd *ohci = hcd_to_ohci (hcd);
49+ int ret;
50
51 if ((ret = ohci_run(ohci)) < 0) {
52 err("can't start %s", hcd->self.bus_name);
53@@ -390,6 +398,7 @@ static const struct hc_driver ohci_at91_hc_driver = {
54 /*
55 * basic lifecycle operations
56 */
57+ .reset = ohci_at91_reset,
58 .start = ohci_at91_start,
59 .stop = ohci_stop,
60 .shutdown = ohci_shutdown,
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch
new file mode 100644
index 00000000..181bd55e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch
@@ -0,0 +1,70 @@
1From 4061b435a02342ee10ee34fb69f2c75d53e8da70 Mon Sep 17 00:00:00 2001
2From: Jonathan Nieder <jrnieder@gmail.com>
3Date: Fri, 11 May 2012 16:17:16 +0200
4Subject: [PATCH 053/117] HID: logitech: read all 32 bits of report type
5 bitfield
6
7commit 44d27f7dfedd9aadc082cda31462f6600f56e4ec upstream.
8
9On big-endian systems (e.g., Apple PowerBook), trying to use a
10logitech wireless mouse with the Logitech Unifying Receiver does not
11work with v3.2 and later kernels. The device doesn't show up in
12/dev/input. Older kernels work fine.
13
14That is because the new hid-logitech-dj driver claims the device. The
15device arrival notification appears:
16
17 20 00 41 02 00 00 00 00 00 00 00 00 00 00 00
18
19and we read the report_types bitfield (02 00 00 00) to find out what
20kind of device it is. Unfortunately the driver only reads the first 8
21bits and treats that value as a 32-bit little-endian number, so on a
22powerpc the report type seems to be 0x02000000 and is not recognized.
23
24Even on little-endian machines, connecting a media center remote
25control (report type 00 01 00 00) with this driver loaded would
26presumably fail for the same reason.
27
28Fix both problems by using get_unaligned_le32() to read all four
29bytes, which is a little clearer anyway. After this change, the
30wireless mouse works on Hugo's PowerBook again.
31
32Based on a patch by Nestor Lopez Casado.
33Addresses http://bugs.debian.org/671292
34
35Reported-by: Hugo Osvaldo Barrera <hugo@osvaldobarrera.com.ar>
36Inspired-by: Nestor Lopez Casado <nlopezcasad@logitech.com>
37Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
38Signed-off-by: Nestor Lopez Casado <nlopezcasad@logitech.com>
39Signed-off-by: Jiri Kosina <jkosina@suse.cz>
40Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
41---
42 drivers/hid/hid-logitech-dj.c | 5 +++--
43 1 file changed, 3 insertions(+), 2 deletions(-)
44
45diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
46index 38b12e4..2eac8c5 100644
47--- a/drivers/hid/hid-logitech-dj.c
48+++ b/drivers/hid/hid-logitech-dj.c
49@@ -26,6 +26,7 @@
50 #include <linux/hid.h>
51 #include <linux/module.h>
52 #include <linux/usb.h>
53+#include <asm/unaligned.h>
54 #include "usbhid/usbhid.h"
55 #include "hid-ids.h"
56 #include "hid-logitech-dj.h"
57@@ -265,8 +266,8 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev,
58 goto dj_device_allocate_fail;
59 }
60
61- dj_dev->reports_supported = le32_to_cpu(
62- dj_report->report_params[DEVICE_PAIRED_RF_REPORT_TYPE]);
63+ dj_dev->reports_supported = get_unaligned_le32(
64+ dj_report->report_params + DEVICE_PAIRED_RF_REPORT_TYPE);
65 dj_dev->hdev = dj_hiddev;
66 dj_dev->dj_receiver_dev = djrcv_dev;
67 dj_dev->device_index = dj_report->device_index;
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch
new file mode 100644
index 00000000..105ed170
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch
@@ -0,0 +1,77 @@
1From 38827d01920cd8adbdbdb89d79b749f6cb50b8f0 Mon Sep 17 00:00:00 2001
2From: Darren Hart <dvhart@linux.intel.com>
3Date: Fri, 11 May 2012 13:56:57 -0700
4Subject: [PATCH 054/117] USB: serial: ti_usb_3410_5052: Add support for the
5 FRI2 serial console
6
7commit 975dc33b82cb887d75a29b1e3835c8eb063a8e99 upstream.
8
9The Kontron M2M development board, also known as the Fish River Island II,
10has an optional daughter card providing access to the PCH_UART (EG20T) via
11a ti_usb_3410_5052 uart to usb chip.
12
13http://us.kontron.com/products/systems+and+platforms/m2m/m2m+smart+services+developer+kit.html
14
15Signed-off-by: Darren Hart <dvhart@linux.intel.com>
16CC: Al Borchers <alborchers@steinerpoint.com>
17CC: Peter Berger <pberger@brimson.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/usb/serial/ti_usb_3410_5052.c | 6 ++++--
22 drivers/usb/serial/ti_usb_3410_5052.h | 1 +
23 2 files changed, 5 insertions(+), 2 deletions(-)
24
25diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
26index 21c82b0..2856474 100644
27--- a/drivers/usb/serial/ti_usb_3410_5052.c
28+++ b/drivers/usb/serial/ti_usb_3410_5052.c
29@@ -165,7 +165,7 @@ static unsigned int product_5052_count;
30 /* the array dimension is the number of default entries plus */
31 /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
32 /* null entry */
33-static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = {
34+static struct usb_device_id ti_id_table_3410[15+TI_EXTRA_VID_PID_COUNT+1] = {
35 { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
36 { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
37 { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
38@@ -180,6 +180,7 @@ static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = {
39 { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
40 { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
41 { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
42+ { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) },
43 };
44
45 static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
46@@ -189,7 +190,7 @@ static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
47 { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
48 };
49
50-static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1] = {
51+static struct usb_device_id ti_id_table_combined[19+2*TI_EXTRA_VID_PID_COUNT+1] = {
52 { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
53 { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
54 { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
55@@ -208,6 +209,7 @@ static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1]
56 { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
57 { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
58 { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) },
59+ { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) },
60 { }
61 };
62
63diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h
64index f140f1b..b353e7e 100644
65--- a/drivers/usb/serial/ti_usb_3410_5052.h
66+++ b/drivers/usb/serial/ti_usb_3410_5052.h
67@@ -37,6 +37,7 @@
68 #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */
69 #define TI_5052_EEPROM_PRODUCT_ID 0x505A /* EEPROM, no firmware */
70 #define TI_5052_FIRMWARE_PRODUCT_ID 0x505F /* firmware is running */
71+#define FRI2_PRODUCT_ID 0x5053 /* Fish River Island II */
72
73 /* Multi-Tech vendor and product ids */
74 #define MTS_VENDOR_ID 0x06E0
75--
761.7.9.5
77
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch
new file mode 100644
index 00000000..40e98b33
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch
@@ -0,0 +1,38 @@
1From 420e76b95a867f5105ee9b3d824c47f62601c19b Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Wed, 9 May 2012 13:53:21 +0200
4Subject: [PATCH 055/117] USB: cdc-wdm: poll must return POLLHUP if device is
5 gone
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 616b6937e348ef2b4c6ea5fef2cd3c441145efb0 upstream.
11
12Else the poll will be restarted indefinitely in a tight loop,
13preventing final device cleanup.
14
15Cc: Oliver Neukum <oliver@neukum.org>
16Signed-off-by: Bjørn Mork <bjorn@mork.no>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/usb/class/cdc-wdm.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
24index cfe5be4..38d8c33 100644
25--- a/drivers/usb/class/cdc-wdm.c
26+++ b/drivers/usb/class/cdc-wdm.c
27@@ -511,7 +511,7 @@ static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait)
28
29 spin_lock_irqsave(&desc->iuspin, flags);
30 if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
31- mask = POLLERR;
32+ mask = POLLHUP | POLLERR;
33 spin_unlock_irqrestore(&desc->iuspin, flags);
34 goto desc_out;
35 }
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch
new file mode 100644
index 00000000..4ad688aa
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch
@@ -0,0 +1,54 @@
1From ec4941d4623bada1da050a962485961da8c928d6 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Mon, 30 Apr 2012 09:26:11 +0200
4Subject: [PATCH 056/117] USB: cdc-wdm: add debug messages on cleanup
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 880bca3a2a6f159d7453e0cbcbfe2f1d8204d907 upstream.
10
11Device state cleanup is done in either wdm_disconnect or
12wdm_release depending on the order they are called. Adding
13a couple of debug messages to document the program flow.
14
15Signed-off-by: Bjørn Mork <bjorn@mork.no>
16Acked-by: Oliver Neukum <oneukum@suse.de>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18[bwh: Backported to 3.2: adjust context]
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/usb/class/cdc-wdm.c | 8 ++++++--
22 1 file changed, 6 insertions(+), 2 deletions(-)
23
24diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
25index 38d8c33..40a3f0b 100644
26--- a/drivers/usb/class/cdc-wdm.c
27+++ b/drivers/usb/class/cdc-wdm.c
28@@ -588,10 +588,12 @@ static int wdm_release(struct inode *inode, struct file *file)
29 if (!desc->count) {
30 dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
31 kill_urbs(desc);
32- if (!test_bit(WDM_DISCONNECTING, &desc->flags))
33+ if (!test_bit(WDM_DISCONNECTING, &desc->flags)) {
34 desc->intf->needs_remote_wakeup = 0;
35- else
36+ } else {
37+ dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__);
38 cleanup(desc);
39+ }
40 }
41 mutex_unlock(&wdm_mutex);
42 return 0;
43@@ -807,6 +809,8 @@ static void wdm_disconnect(struct usb_interface *intf)
44 mutex_unlock(&desc->rlock);
45 if (!desc->count)
46 cleanup(desc);
47+ else
48+ dev_dbg(&intf->dev, "%s: %d open files - postponing cleanup\n", __func__, desc->count);
49 mutex_unlock(&wdm_mutex);
50 }
51
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch
new file mode 100644
index 00000000..146b18b3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch
@@ -0,0 +1,66 @@
1From beaa75548738c322895c5b3ca7c010397cfb0afb Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Wed, 9 May 2012 13:53:22 +0200
4Subject: [PATCH 057/117] USB: cdc-wdm: cannot use dev_printk when device is
5 gone
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 6b0b79d38806481c1c8fffa7c5842f3c83679a42 upstream.
11
12We cannot dereference a removed USB interface for
13dev_printk. Use pr_debug instead where necessary.
14
15Flush errors are expected if device is unplugged and are
16therefore best ingored at this point.
17
18Move the kill_urbs() call in wdm_release with dev_dbg()
19for the non disconnect, as we know it has already been
20called if WDM_DISCONNECTING is set. This does not
21actually fix anything, but keeps the code more consistent.
22
23Cc: Oliver Neukum <oliver@neukum.org>
24Signed-off-by: Bjørn Mork <bjorn@mork.no>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26[bwh: Backported to 3.2: adjust context]
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28---
29 drivers/usb/class/cdc-wdm.c | 11 +++++++----
30 1 file changed, 7 insertions(+), 4 deletions(-)
31
32diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
33index 40a3f0b..554ac90 100644
34--- a/drivers/usb/class/cdc-wdm.c
35+++ b/drivers/usb/class/cdc-wdm.c
36@@ -496,7 +496,9 @@ static int wdm_flush(struct file *file, fl_owner_t id)
37 struct wdm_device *desc = file->private_data;
38
39 wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags));
40- if (desc->werr < 0)
41+
42+ /* cannot dereference desc->intf if WDM_DISCONNECTING */
43+ if (desc->werr < 0 && !test_bit(WDM_DISCONNECTING, &desc->flags))
44 dev_err(&desc->intf->dev, "Error in flush path: %d\n",
45 desc->werr);
46
47@@ -586,12 +588,13 @@ static int wdm_release(struct inode *inode, struct file *file)
48 mutex_unlock(&desc->wlock);
49
50 if (!desc->count) {
51- dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
52- kill_urbs(desc);
53 if (!test_bit(WDM_DISCONNECTING, &desc->flags)) {
54+ dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
55+ kill_urbs(desc);
56 desc->intf->needs_remote_wakeup = 0;
57 } else {
58- dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__);
59+ /* must avoid dev_printk here as desc->intf is invalid */
60+ pr_debug(KBUILD_MODNAME " %s: device gone - cleaning up\n", __func__);
61 cleanup(desc);
62 }
63 }
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch
new file mode 100644
index 00000000..8c999bc1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch
@@ -0,0 +1,33 @@
1From d3f8f68e0ff8065d2769fc80ebab6cd4a99df65d Mon Sep 17 00:00:00 2001
2From: Alan Cox <alan@linux.intel.com>
3Date: Mon, 14 May 2012 14:51:22 +0100
4Subject: [PATCH 058/117] tty: Allow uart_register/unregister/register
5
6commit 1e66cded334e6cea596c72f6f650eec351b1e959 upstream.
7
8This is legitimate but because we don't clear the drv->state pointer in the
9unregister code causes a bogus BUG().
10
11Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=42880
12Signed-off-by: Alan Cox <alan@linux.intel.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/tty/serial/serial_core.c | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
20index 0406d7f..af5ffb9 100644
21--- a/drivers/tty/serial/serial_core.c
22+++ b/drivers/tty/serial/serial_core.c
23@@ -2305,6 +2305,7 @@ void uart_unregister_driver(struct uart_driver *drv)
24 tty_unregister_driver(p);
25 put_tty_driver(p);
26 kfree(drv->state);
27+ drv->state = NULL;
28 drv->tty_driver = NULL;
29 }
30
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch
new file mode 100644
index 00000000..22d6da37
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch
@@ -0,0 +1,51 @@
1From ac2fd7de4ac5b536aace631588cdab6c27a3ef9d Mon Sep 17 00:00:00 2001
2From: Tejun Heo <tj@kernel.org>
3Date: Mon, 14 May 2012 15:04:50 -0700
4Subject: [PATCH 059/117] workqueue: skip nr_running sanity check in
5 worker_enter_idle() if trustee is active
6
7commit 544ecf310f0e7f51fa057ac2a295fc1b3b35a9d3 upstream.
8
9worker_enter_idle() has WARN_ON_ONCE() which triggers if nr_running
10isn't zero when every worker is idle. This can trigger spuriously
11while a cpu is going down due to the way trustee sets %WORKER_ROGUE
12and zaps nr_running.
13
14It first sets %WORKER_ROGUE on all workers without updating
15nr_running, releases gcwq->lock, schedules, regrabs gcwq->lock and
16then zaps nr_running. If the last running worker enters idle
17inbetween, it would see stale nr_running which hasn't been zapped yet
18and trigger the WARN_ON_ONCE().
19
20Fix it by performing the sanity check iff the trustee is idle.
21
22Signed-off-by: Tejun Heo <tj@kernel.org>
23Reported-by: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 kernel/workqueue.c | 9 +++++++--
27 1 file changed, 7 insertions(+), 2 deletions(-)
28
29diff --git a/kernel/workqueue.c b/kernel/workqueue.c
30index bb425b1..7947e16 100644
31--- a/kernel/workqueue.c
32+++ b/kernel/workqueue.c
33@@ -1215,8 +1215,13 @@ static void worker_enter_idle(struct worker *worker)
34 } else
35 wake_up_all(&gcwq->trustee_wait);
36
37- /* sanity check nr_running */
38- WARN_ON_ONCE(gcwq->nr_workers == gcwq->nr_idle &&
39+ /*
40+ * Sanity check nr_running. Because trustee releases gcwq->lock
41+ * between setting %WORKER_ROGUE and zapping nr_running, the
42+ * warning may trigger spuriously. Check iff trustee is idle.
43+ */
44+ WARN_ON_ONCE(gcwq->trustee_state == TRUSTEE_DONE &&
45+ gcwq->nr_workers == gcwq->nr_idle &&
46 atomic_read(get_gcwq_nr_running(gcwq->cpu)));
47 }
48
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch
new file mode 100644
index 00000000..58e05474
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch
@@ -0,0 +1,129 @@
1From 24338a0903923d202e90e35100abe050436bf00a Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Tue, 8 May 2012 09:22:49 -0700
4Subject: [PATCH 060/117] xhci: Add new short TX quirk for Fresco Logic host.
5
6commit 1530bbc6272d9da1e39ef8e06190d42c13a02733 upstream.
7
8Sergio reported that when he recorded audio from a USB headset mic
9plugged into the USB 3.0 port on his ASUS N53SV-DH72, the audio sounded
10"robotic". When plugged into the USB 2.0 port under EHCI on the same
11laptop, the audio sounded fine. The device is:
12
13Bus 002 Device 004: ID 046d:0a0c Logitech, Inc. Clear Chat Comfort USB Headset
14
15The problem was tracked down to the Fresco Logic xHCI host controller
16not correctly reporting short transfers on isochronous IN endpoints.
17The driver would submit a 96 byte transfer, the device would only send
1888 or 90 bytes, and the xHCI host would report the transfer had a
19"successful" completion code, with an untransferred buffer length of 8
20or 6 bytes.
21
22The successful completion code and non-zero untransferred length is a
23contradiction. The xHCI host is supposed to only mark a transfer as
24successful if all the bytes are transferred. Otherwise, the transfer
25should be marked with a short packet completion code. Without the EHCI
26bus trace, we wouldn't know whether the xHCI driver should trust the
27completion code or the untransferred length. With it, we know to trust
28the untransferred length.
29
30Add a new xHCI quirk for the Fresco Logic host controller. If a
31transfer is reported as successful, but the untransferred length is
32non-zero, print a warning. For the Fresco Logic host, change the
33completion code to COMP_SHORT_TX and process the transfer like a short
34transfer.
35
36This should be backported to stable kernels that contain the commit
37f5182b4155b9d686c5540a6822486400e34ddd98 "xhci: Disable MSI for some
38Fresco Logic hosts." That commit was marked for stable kernels as old
39as 2.6.36.
40
41Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
42Reported-by: Sergio Correia <lists@uece.net>
43Tested-by: Sergio Correia <lists@uece.net>
44Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
45Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
46---
47 drivers/usb/host/xhci-pci.c | 1 +
48 drivers/usb/host/xhci-ring.c | 20 +++++++++++++++++---
49 drivers/usb/host/xhci.h | 1 +
50 3 files changed, 19 insertions(+), 3 deletions(-)
51
52diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
53index 211296a..daf5754 100644
54--- a/drivers/usb/host/xhci-pci.c
55+++ b/drivers/usb/host/xhci-pci.c
56@@ -72,6 +72,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
57 xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u "
58 "has broken MSI implementation\n",
59 pdev->revision);
60+ xhci->quirks |= XHCI_TRUST_TX_LENGTH;
61 }
62
63 if (pdev->vendor == PCI_VENDOR_ID_NEC)
64diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
65index 2304c45..fb0981e 100644
66--- a/drivers/usb/host/xhci-ring.c
67+++ b/drivers/usb/host/xhci-ring.c
68@@ -1735,8 +1735,12 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
69 /* handle completion code */
70 switch (trb_comp_code) {
71 case COMP_SUCCESS:
72- frame->status = 0;
73- break;
74+ if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) {
75+ frame->status = 0;
76+ break;
77+ }
78+ if ((xhci->quirks & XHCI_TRUST_TX_LENGTH))
79+ trb_comp_code = COMP_SHORT_TX;
80 case COMP_SHORT_TX:
81 frame->status = td->urb->transfer_flags & URB_SHORT_NOT_OK ?
82 -EREMOTEIO : 0;
83@@ -1833,13 +1837,16 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td,
84 switch (trb_comp_code) {
85 case COMP_SUCCESS:
86 /* Double check that the HW transferred everything. */
87- if (event_trb != td->last_trb) {
88+ if (event_trb != td->last_trb ||
89+ TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) {
90 xhci_warn(xhci, "WARN Successful completion "
91 "on short TX\n");
92 if (td->urb->transfer_flags & URB_SHORT_NOT_OK)
93 *status = -EREMOTEIO;
94 else
95 *status = 0;
96+ if ((xhci->quirks & XHCI_TRUST_TX_LENGTH))
97+ trb_comp_code = COMP_SHORT_TX;
98 } else {
99 *status = 0;
100 }
101@@ -1978,6 +1985,13 @@ static int handle_tx_event(struct xhci_hcd *xhci,
102 * transfer type
103 */
104 case COMP_SUCCESS:
105+ if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0)
106+ break;
107+ if (xhci->quirks & XHCI_TRUST_TX_LENGTH)
108+ trb_comp_code = COMP_SHORT_TX;
109+ else
110+ xhci_warn(xhci, "WARN Successful completion on short TX: "
111+ "needs XHCI_TRUST_TX_LENGTH quirk?\n");
112 case COMP_SHORT_TX:
113 break;
114 case COMP_STOP:
115diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
116index 4850c4d..363b141 100644
117--- a/drivers/usb/host/xhci.h
118+++ b/drivers/usb/host/xhci.h
119@@ -1466,6 +1466,7 @@ struct xhci_hcd {
120 #define XHCI_RESET_ON_RESUME (1 << 7)
121 #define XHCI_SW_BW_CHECKING (1 << 8)
122 #define XHCI_AMD_0x96_HOST (1 << 9)
123+#define XHCI_TRUST_TX_LENGTH (1 << 10)
124 unsigned int num_active_eps;
125 unsigned int limit_active_eps;
126 /* There are two roothubs to keep track of bus suspend info for */
127--
1281.7.9.5
129
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch
new file mode 100644
index 00000000..230c80ac
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch
@@ -0,0 +1,43 @@
1From 644753e795bddc5e687932d9e8b6795859553ac3 Mon Sep 17 00:00:00 2001
2From: Andiry Xu <andiry.xu@gmail.com>
3Date: Sat, 5 May 2012 00:50:10 +0800
4Subject: [PATCH 061/117] usbcore: enable USB2 LPM if port suspend fails
5
6commit c3e751e4f4754793bb52bd5ae30e9cc027edbb12 upstream.
7
8USB2 LPM is disabled when device begin to suspend and enabled after device
9is resumed. That's because USB spec does not define the transition from
10U1/U2 state to U3 state.
11
12If usb_port_suspend() fails, usb_port_resume() is never called, and USB2 LPM
13is disabled in this situation. Enable USB2 LPM if port suspend fails.
14
15This patch should be backported to kernels as old as 3.2, that contain
16the commit 65580b4321eb36f16ae8b5987bfa1bb948fc5112 "xHCI: set USB2
17hardware LPM".
18
19Signed-off-by: Andiry Xu <andiry.xu@gmail.com>
20Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/usb/core/hub.c | 4 ++++
24 1 file changed, 4 insertions(+)
25
26diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
27index ab4e49f..50cf41a 100644
28--- a/drivers/usb/core/hub.c
29+++ b/drivers/usb/core/hub.c
30@@ -2420,6 +2420,10 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
31 NULL, 0,
32 USB_CTRL_SET_TIMEOUT);
33
34+ /* Try to enable USB2 hardware LPM again */
35+ if (udev->usb2_hw_lpm_capable == 1)
36+ usb_set_usb2_hardware_lpm(udev, 1);
37+
38 /* System sleep transitions should never fail */
39 if (!PMSG_IS_AUTO(msg))
40 status = 0;
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch
new file mode 100644
index 00000000..92793f38
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch
@@ -0,0 +1,62 @@
1From 2ece12a2e8f1df09f28dbed203e3295d99d94c83 Mon Sep 17 00:00:00 2001
2From: Robert Richter <robert.richter@amd.com>
3Date: Fri, 18 May 2012 12:40:42 +0200
4Subject: [PATCH 062/117] perf/x86: Update event scheduling constraints for
5 AMD family 15h models
6
7commit 5bcdf5e4fee3c45e1281c25e4941f2163cb28c65 upstream.
8
9This update is for newer family 15h cpu models from 0x02 to 0x1f.
10
11Signed-off-by: Robert Richter <robert.richter@amd.com>
12Acked-by: Peter Zijlstra <peterz@infradead.org>
13Cc: Stephane Eranian <eranian@google.com>
14Link: http://lkml.kernel.org/r/1337337642-1621-1-git-send-email-robert.richter@amd.com
15Signed-off-by: Ingo Molnar <mingo@kernel.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/x86/kernel/cpu/perf_event_amd.c | 11 ++++++++++-
19 1 file changed, 10 insertions(+), 1 deletion(-)
20
21diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
22index f64a039..3dbfb00 100644
23--- a/arch/x86/kernel/cpu/perf_event_amd.c
24+++ b/arch/x86/kernel/cpu/perf_event_amd.c
25@@ -473,6 +473,7 @@ static __initconst const struct x86_pmu amd_pmu = {
26 * 0x023 DE PERF_CTL[2:0]
27 * 0x02D LS PERF_CTL[3]
28 * 0x02E LS PERF_CTL[3,0]
29+ * 0x031 LS PERF_CTL[2:0] (**)
30 * 0x043 CU PERF_CTL[2:0]
31 * 0x045 CU PERF_CTL[2:0]
32 * 0x046 CU PERF_CTL[2:0]
33@@ -486,10 +487,12 @@ static __initconst const struct x86_pmu amd_pmu = {
34 * 0x0DD LS PERF_CTL[5:0]
35 * 0x0DE LS PERF_CTL[5:0]
36 * 0x0DF LS PERF_CTL[5:0]
37+ * 0x1C0 EX PERF_CTL[5:3]
38 * 0x1D6 EX PERF_CTL[5:0]
39 * 0x1D8 EX PERF_CTL[5:0]
40 *
41- * (*) depending on the umask all FPU counters may be used
42+ * (*) depending on the umask all FPU counters may be used
43+ * (**) only one unitmask enabled at a time
44 */
45
46 static struct event_constraint amd_f15_PMC0 = EVENT_CONSTRAINT(0, 0x01, 0);
47@@ -539,6 +542,12 @@ amd_get_event_constraints_f15h(struct cpu_hw_events *cpuc, struct perf_event *ev
48 return &amd_f15_PMC3;
49 case 0x02E:
50 return &amd_f15_PMC30;
51+ case 0x031:
52+ if (hweight_long(hwc->config & ARCH_PERFMON_EVENTSEL_UMASK) <= 1)
53+ return &amd_f15_PMC20;
54+ return &emptyconstraint;
55+ case 0x1C0:
56+ return &amd_f15_PMC53;
57 default:
58 return &amd_f15_PMC50;
59 }
60--
611.7.9.5
62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch
new file mode 100644
index 00000000..4f897b45
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch
@@ -0,0 +1,74 @@
1From 51025bed29bdd5301f9028357e13707356ae9692 Mon Sep 17 00:00:00 2001
2From: Oliver Neukum <oneukum@suse.de>
3Date: Thu, 10 May 2012 10:19:21 +0200
4Subject: [PATCH 063/117] USB: fix resource leak in xhci power loss path
5
6commit f8a9e72d125f4e00ec529ba67b674321a1f3bf31 upstream.
7
8Some more data structures must be freed and counters
9reset if an XHCI controller has lost power. The failure
10to do so renders some chips inoperative after a certain number
11of S4 cycles.
12
13This patch should be backported to kernels as old as 3.2,
14that contain the commits c29eea621900f18287d50519f72cb9113746d75a
15"xhci: Implement HS/FS/LS bandwidth checking." and
16commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe
17"xhci: Implement HS/FS/LS bandwidth checking."
18
19Signed-off-by: Oliver Neukum <oneukum@suse.de>
20Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/usb/host/xhci-mem.c | 26 ++++++++++++++++++++++++++
24 1 file changed, 26 insertions(+)
25
26diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
27index 01c3800..a7b0676 100644
28--- a/drivers/usb/host/xhci-mem.c
29+++ b/drivers/usb/host/xhci-mem.c
30@@ -1699,6 +1699,14 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
31 {
32 struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller);
33 struct dev_info *dev_info, *next;
34+ struct list_head *tt_list_head;
35+ struct list_head *tt;
36+ struct list_head *endpoints;
37+ struct list_head *ep, *q;
38+ struct xhci_tt_bw_info *tt_info;
39+ struct xhci_interval_bw_table *bwt;
40+ struct xhci_virt_ep *virt_ep;
41+
42 unsigned long flags;
43 int size;
44 int i;
45@@ -1757,8 +1765,26 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
46 }
47 spin_unlock_irqrestore(&xhci->lock, flags);
48
49+ bwt = &xhci->rh_bw->bw_table;
50+ for (i = 0; i < XHCI_MAX_INTERVAL; i++) {
51+ endpoints = &bwt->interval_bw[i].endpoints;
52+ list_for_each_safe(ep, q, endpoints) {
53+ virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list);
54+ list_del(&virt_ep->bw_endpoint_list);
55+ kfree(virt_ep);
56+ }
57+ }
58+
59+ tt_list_head = &xhci->rh_bw->tts;
60+ list_for_each_safe(tt, q, tt_list_head) {
61+ tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
62+ list_del(tt);
63+ kfree(tt_info);
64+ }
65+
66 xhci->num_usb2_ports = 0;
67 xhci->num_usb3_ports = 0;
68+ xhci->num_active_eps = 0;
69 kfree(xhci->usb2_ports);
70 kfree(xhci->usb3_ports);
71 kfree(xhci->port_array);
72--
731.7.9.5
74
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch
new file mode 100644
index 00000000..f28b1678
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch
@@ -0,0 +1,39 @@
1From 06abda2cc51b6f5ffcb67e7b7299ffd7e3af966b Mon Sep 17 00:00:00 2001
2From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
3Date: Tue, 8 May 2012 07:09:26 -0700
4Subject: [PATCH 064/117] xhci: Reset reserved command ring TRBs on cleanup.
5
6commit 33b2831ac870d50cc8e01c317b07fb1e69c13fe1 upstream.
7
8When the xHCI driver needs to clean up memory (perhaps due to a failed
9register restore on resume from S3 or resume from S4), it needs to reset
10the number of reserved TRBs on the command ring to zero. Otherwise,
11several resume cycles (about 30) with a UAS device attached will
12continually increment the number of reserved TRBs, until all command
13submissions fail because there isn't enough room on the command ring.
14
15This patch should be backported to kernels as old as 2.6.32,
16that contain the commit 913a8a344ffcaf0b4a586d6662a2c66a7106557d
17"USB: xhci: Change how xHCI commands are handled."
18
19Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/usb/host/xhci-mem.c | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
26index a7b0676..4232e868 100644
27--- a/drivers/usb/host/xhci-mem.c
28+++ b/drivers/usb/host/xhci-mem.c
29@@ -1723,6 +1723,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
30 xhci->event_ring = NULL;
31 xhci_dbg(xhci, "Freed event ring\n");
32
33+ xhci->cmd_ring_reserved_trbs = 0;
34 if (xhci->cmd_ring)
35 xhci_ring_free(xhci, xhci->cmd_ring);
36 xhci->cmd_ring = NULL;
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch
new file mode 100644
index 00000000..48147134
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch
@@ -0,0 +1,132 @@
1From 13538bbeb4fc2e5f45d426579967a675474e4f16 Mon Sep 17 00:00:00 2001
2From: Huajun Li <huajun.li.lee@gmail.com>
3Date: Fri, 18 May 2012 20:12:51 +0800
4Subject: [PATCH 065/117] USB: Remove races in devio.c
5
6commit 4e09dcf20f7b5358615514c2ec8584b248ab8874 upstream.
7
8There exist races in devio.c, below is one case,
9and there are similar races in destroy_async()
10and proc_unlinkurb(). Remove these races.
11
12 cancel_bulk_urbs() async_completed()
13------------------- -----------------------
14 spin_unlock(&ps->lock);
15
16 list_move_tail(&as->asynclist,
17 &ps->async_completed);
18
19 wake_up(&ps->wait);
20
21 Lead to free_async() be triggered,
22 then urb and 'as' will be freed.
23
24 usb_unlink_urb(as->urb);
25 ===> refer to the freed 'as'
26
27Signed-off-by: Huajun Li <huajun.li.lee@gmail.com>
28Cc: Alan Stern <stern@rowland.harvard.edu>
29Cc: Oncaphillis <oncaphillis@snafu.de>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
32---
33 drivers/usb/core/devio.c | 33 +++++++++++++++++++++++++--------
34 1 file changed, 25 insertions(+), 8 deletions(-)
35
36diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
37index 7abf060..f6ff837 100644
38--- a/drivers/usb/core/devio.c
39+++ b/drivers/usb/core/devio.c
40@@ -295,17 +295,14 @@ static struct async *async_getcompleted(struct dev_state *ps)
41 static struct async *async_getpending(struct dev_state *ps,
42 void __user *userurb)
43 {
44- unsigned long flags;
45 struct async *as;
46
47- spin_lock_irqsave(&ps->lock, flags);
48 list_for_each_entry(as, &ps->async_pending, asynclist)
49 if (as->userurb == userurb) {
50 list_del_init(&as->asynclist);
51- spin_unlock_irqrestore(&ps->lock, flags);
52 return as;
53 }
54- spin_unlock_irqrestore(&ps->lock, flags);
55+
56 return NULL;
57 }
58
59@@ -360,6 +357,7 @@ static void cancel_bulk_urbs(struct dev_state *ps, unsigned bulk_addr)
60 __releases(ps->lock)
61 __acquires(ps->lock)
62 {
63+ struct urb *urb;
64 struct async *as;
65
66 /* Mark all the pending URBs that match bulk_addr, up to but not
67@@ -382,8 +380,11 @@ __acquires(ps->lock)
68 list_for_each_entry(as, &ps->async_pending, asynclist) {
69 if (as->bulk_status == AS_UNLINK) {
70 as->bulk_status = 0; /* Only once */
71+ urb = as->urb;
72+ usb_get_urb(urb);
73 spin_unlock(&ps->lock); /* Allow completions */
74- usb_unlink_urb(as->urb);
75+ usb_unlink_urb(urb);
76+ usb_put_urb(urb);
77 spin_lock(&ps->lock);
78 goto rescan;
79 }
80@@ -434,6 +435,7 @@ static void async_completed(struct urb *urb)
81
82 static void destroy_async(struct dev_state *ps, struct list_head *list)
83 {
84+ struct urb *urb;
85 struct async *as;
86 unsigned long flags;
87
88@@ -441,10 +443,13 @@ static void destroy_async(struct dev_state *ps, struct list_head *list)
89 while (!list_empty(list)) {
90 as = list_entry(list->next, struct async, asynclist);
91 list_del_init(&as->asynclist);
92+ urb = as->urb;
93+ usb_get_urb(urb);
94
95 /* drop the spinlock so the completion handler can run */
96 spin_unlock_irqrestore(&ps->lock, flags);
97- usb_kill_urb(as->urb);
98+ usb_kill_urb(urb);
99+ usb_put_urb(urb);
100 spin_lock_irqsave(&ps->lock, flags);
101 }
102 spin_unlock_irqrestore(&ps->lock, flags);
103@@ -1350,12 +1355,24 @@ static int proc_submiturb(struct dev_state *ps, void __user *arg)
104
105 static int proc_unlinkurb(struct dev_state *ps, void __user *arg)
106 {
107+ struct urb *urb;
108 struct async *as;
109+ unsigned long flags;
110
111+ spin_lock_irqsave(&ps->lock, flags);
112 as = async_getpending(ps, arg);
113- if (!as)
114+ if (!as) {
115+ spin_unlock_irqrestore(&ps->lock, flags);
116 return -EINVAL;
117- usb_kill_urb(as->urb);
118+ }
119+
120+ urb = as->urb;
121+ usb_get_urb(urb);
122+ spin_unlock_irqrestore(&ps->lock, flags);
123+
124+ usb_kill_urb(urb);
125+ usb_put_urb(urb);
126+
127 return 0;
128 }
129
130--
1311.7.9.5
132
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch
new file mode 100644
index 00000000..dc48a60f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch
@@ -0,0 +1,37 @@
1From d4bae88d4fc370e24457c3cf69fb343316b8f759 Mon Sep 17 00:00:00 2001
2From: Shaohua Li <shli@kernel.org>
3Date: Mon, 21 May 2012 09:26:59 +1000
4Subject: [PATCH 066/117] md: using GFP_NOIO to allocate bio for flush request
5
6commit b5e1b8cee7ad58a15d2fa79bcd7946acb592602d upstream.
7
8A flush request is usually issued in transaction commit code path, so
9using GFP_KERNEL to allocate memory for flush request bio falls into
10the classic deadlock issue.
11
12This is suitable for any -stable kernel to which it applies as it
13avoids a possible deadlock.
14
15Signed-off-by: Shaohua Li <shli@fusionio.com>
16Signed-off-by: NeilBrown <neilb@suse.de>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/md/md.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/drivers/md/md.c b/drivers/md/md.c
23index adcd850..700ecae 100644
24--- a/drivers/md/md.c
25+++ b/drivers/md/md.c
26@@ -453,7 +453,7 @@ static void submit_flushes(struct work_struct *ws)
27 atomic_inc(&rdev->nr_pending);
28 atomic_inc(&rdev->nr_pending);
29 rcu_read_unlock();
30- bi = bio_alloc_mddev(GFP_KERNEL, 0, mddev);
31+ bi = bio_alloc_mddev(GFP_NOIO, 0, mddev);
32 bi->bi_end_io = md_end_flush;
33 bi->bi_private = rdev;
34 bi->bi_bdev = rdev->bdev;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch
new file mode 100644
index 00000000..346a2076
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch
@@ -0,0 +1,41 @@
1From ed8e2c17d62006fb136c30abeb552673727c5eee Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Sat, 14 Apr 2012 17:29:30 +0200
4Subject: [PATCH 067/117] um: Implement a custom pte_same() function
5
6commit f15b9000eb1d09bbaa4b0a6b2089d7e1f64e84b3 upstream.
7
8UML uses the _PAGE_NEWPAGE flag to mark pages which are not jet
9installed on the host side using mmap().
10pte_same() has to ignore this flag, otherwise unuse_pte_range()
11is unable to unuse the page because two identical
12page tables entries with different _PAGE_NEWPAGE flags would not
13match and swapoff() would never return.
14
15Analyzed-by: Hugh Dickins <hughd@google.com>
16Signed-off-by: Richard Weinberger <richard@nod.at>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 arch/um/include/asm/pgtable.h | 6 ++++++
20 1 file changed, 6 insertions(+)
21
22diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
23index 41474fb..0fea0ec 100644
24--- a/arch/um/include/asm/pgtable.h
25+++ b/arch/um/include/asm/pgtable.h
26@@ -271,6 +271,12 @@ static inline void set_pte(pte_t *pteptr, pte_t pteval)
27 }
28 #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
29
30+#define __HAVE_ARCH_PTE_SAME
31+static inline int pte_same(pte_t pte_a, pte_t pte_b)
32+{
33+ return !((pte_val(pte_a) ^ pte_val(pte_b)) & ~_PAGE_NEWPAGE);
34+}
35+
36 /*
37 * Conversion functions: convert a page and protection to a page entry,
38 * and a page entry and page directory to the page they refer to.
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch
new file mode 100644
index 00000000..cdb5252e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch
@@ -0,0 +1,39 @@
1From a8f0308ef13a60d8103b7635fdbd54e10a621a0a Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Sat, 14 Apr 2012 17:46:01 +0200
4Subject: [PATCH 068/117] um: Fix __swp_type()
5
6commit 2b76ebaa728f8a3967c52aa189261c72fe56a6f1 upstream.
7
8The current __swp_type() function uses a too small bitshift.
9Using more than one swap files causes bad pages because
10the type bits clash with other page flags.
11
12Analyzed-by: Hugh Dickins <hughd@google.com>
13Signed-off-by: Richard Weinberger <richard@nod.at>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 arch/um/include/asm/pgtable.h | 4 ++--
17 1 file changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
20index 0fea0ec..aa365c5 100644
21--- a/arch/um/include/asm/pgtable.h
22+++ b/arch/um/include/asm/pgtable.h
23@@ -352,11 +352,11 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr);
24 #define update_mmu_cache(vma,address,ptep) do ; while (0)
25
26 /* Encode and de-code a swap entry */
27-#define __swp_type(x) (((x).val >> 4) & 0x3f)
28+#define __swp_type(x) (((x).val >> 5) & 0x1f)
29 #define __swp_offset(x) ((x).val >> 11)
30
31 #define __swp_entry(type, offset) \
32- ((swp_entry_t) { ((type) << 4) | ((offset) << 11) })
33+ ((swp_entry_t) { ((type) << 5) | ((offset) << 11) })
34 #define __pte_to_swp_entry(pte) \
35 ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
36 #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch
new file mode 100644
index 00000000..b4f1a5fc
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch
@@ -0,0 +1,41 @@
1From c3ad2b1e42ce62ce0b8aa5283e5f1eee851dd3fb Mon Sep 17 00:00:00 2001
2From: Shaohua Li <shli@kernel.org>
3Date: Wed, 21 Mar 2012 16:34:17 -0700
4Subject: [PATCH 069/117] swap: don't do discard if no discard option added
5
6commit 052b1987faca3606109d88d96bce124851f7c4c2 upstream.
7
8When swapon() was not passed the SWAP_FLAG_DISCARD option, sys_swapon()
9will still perform a discard operation. This can cause problems if
10discard is slow or buggy.
11
12Reverse the order of the check so that a discard operation is performed
13only if the sys_swapon() caller is attempting to enable discard.
14
15Signed-off-by: Shaohua Li <shli@fusionio.com>
16Reported-by: Holger Kiehl <Holger.Kiehl@dwd.de>
17Tested-by: Holger Kiehl <Holger.Kiehl@dwd.de>
18Cc: Hugh Dickins <hughd@google.com>
19Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
20Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 mm/swapfile.c | 2 +-
24 1 file changed, 1 insertion(+), 1 deletion(-)
25
26diff --git a/mm/swapfile.c b/mm/swapfile.c
27index 2015a1e..d3955f2 100644
28--- a/mm/swapfile.c
29+++ b/mm/swapfile.c
30@@ -2102,7 +2102,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
31 p->flags |= SWP_SOLIDSTATE;
32 p->cluster_next = 1 + (random32() % p->highest_bit);
33 }
34- if (discard_swap(p) == 0 && (swap_flags & SWAP_FLAG_DISCARD))
35+ if ((swap_flags & SWAP_FLAG_DISCARD) && discard_swap(p) == 0)
36 p->flags |= SWP_DISCARDABLE;
37 }
38
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch
new file mode 100644
index 00000000..cf106b48
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch
@@ -0,0 +1,42 @@
1From ae03191fbcee985e26e744fc2e3b928077e647a1 Mon Sep 17 00:00:00 2001
2From: Chris Bagwell <chris@cnpbagwell.com>
3Date: Wed, 26 Oct 2011 22:28:34 -0700
4Subject: [PATCH 070/117] Input: wacom - relax Bamboo stylus ID check
5
6commit c5981411f60c31f0dff6f0f98d2d3711384badaf upstream.
7
8Bit 0x02 always means tip versus eraser. Bit 0x01 is something related
9to version of stylus and different values are starting to be used.
10
11Relaxing proximity check is required to be used with 3rd generation
12Bamboo Pen and Touch tablets.
13
14Signed-off-by: Chris Bagwell <chris@cnpbagwell.com>
15Acked-by: Ping Cheng <pingc@wacom.com>
16Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/input/tablet/wacom_wac.c | 7 +------
20 1 file changed, 1 insertion(+), 6 deletions(-)
21
22diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
23index 2ee47d0..f00c70e 100644
24--- a/drivers/input/tablet/wacom_wac.c
25+++ b/drivers/input/tablet/wacom_wac.c
26@@ -843,12 +843,7 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
27 unsigned char *data = wacom->data;
28 int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
29
30- /*
31- * Similar to Graphire protocol, data[1] & 0x20 is proximity and
32- * data[1] & 0x18 is tool ID. 0x30 is safety check to ignore
33- * 2 unused tool ID's.
34- */
35- prox = (data[1] & 0x30) == 0x30;
36+ prox = (data[1] & 0x20) == 0x20;
37
38 /*
39 * All reports shared between PEN and RUBBER tool must be
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch
new file mode 100644
index 00000000..b1855cc5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch
@@ -0,0 +1,35 @@
1From 3e4b4afbb70e3054734cacd6aacf50024f27c3dd Mon Sep 17 00:00:00 2001
2From: Matt Johnson <johnso87@illinois.edu>
3Date: Fri, 27 Apr 2012 01:42:30 -0500
4Subject: [PATCH 071/117] ahci: Detect Marvell 88SE9172 SATA controller
5
6commit 642d89252201c4155fc3946bf9cdea409e5d263e upstream.
7
8The Marvell 88SE9172 SATA controller (PCI ID 1b4b 917a) already worked
9once it was detected, but was missing an ahci_pci_tbl entry.
10
11Boot tested on a Gigabyte Z68X-UD3H-B3 motherboard.
12
13Signed-off-by: Matt Johnson <johnso87@illinois.edu>
14Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/ata/ahci.c | 2 ++
18 1 file changed, 2 insertions(+)
19
20diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
21index cf26222..fb65915 100644
22--- a/drivers/ata/ahci.c
23+++ b/drivers/ata/ahci.c
24@@ -384,6 +384,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
25 .driver_data = board_ahci_yes_fbs }, /* 88se9128 */
26 { PCI_DEVICE(0x1b4b, 0x9125),
27 .driver_data = board_ahci_yes_fbs }, /* 88se9125 */
28+ { PCI_DEVICE(0x1b4b, 0x917a),
29+ .driver_data = board_ahci_yes_fbs }, /* 88se9172 */
30 { PCI_DEVICE(0x1b4b, 0x91a3),
31 .driver_data = board_ahci_yes_fbs },
32
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch
new file mode 100644
index 00000000..9af45a01
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch
@@ -0,0 +1,59 @@
1From 06d6cd667991ac824b4e32c07ad4c382e202b920 Mon Sep 17 00:00:00 2001
2From: Dima Zavin <dima@android.com>
3Date: Thu, 29 Mar 2012 20:44:06 +0100
4Subject: [PATCH 072/117] ARM: 7365/1: drop unused parameter from
5 flush_cache_user_range
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 4542b6a0fa6b48d9ae6b41c1efeb618b7a221b2a upstream.
11
12vma isn't used and flush_cache_user_range isn't a standard macro that
13is used on several archs with the same prototype. In fact only unicore32
14has a macro with the same name (with an identical implementation and no
15in-tree users).
16
17This is a part of a patch proposed by Dima Zavin (with Message-id:
181272439931-12795-1-git-send-email-dima@android.com) that didn't get
19accepted.
20
21Cc: Dima Zavin <dima@android.com>
22Acked-by: Catalin Marinas <catalin.marinas@arm.com>
23Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
24Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 arch/arm/include/asm/cacheflush.h | 2 +-
28 arch/arm/kernel/traps.c | 2 +-
29 2 files changed, 2 insertions(+), 2 deletions(-)
30
31diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
32index d5d8d5c..1252a26 100644
33--- a/arch/arm/include/asm/cacheflush.h
34+++ b/arch/arm/include/asm/cacheflush.h
35@@ -249,7 +249,7 @@ extern void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr
36 * Harvard caches are synchronised for the user space address range.
37 * This is used for the ARM private sys_cacheflush system call.
38 */
39-#define flush_cache_user_range(vma,start,end) \
40+#define flush_cache_user_range(start,end) \
41 __cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end))
42
43 /*
44diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
45index 99a5727..f363ad9 100644
46--- a/arch/arm/kernel/traps.c
47+++ b/arch/arm/kernel/traps.c
48@@ -488,7 +488,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
49 if (end > vma->vm_end)
50 end = vma->vm_end;
51
52- flush_cache_user_range(vma, start, end);
53+ flush_cache_user_range(start, end);
54 }
55 up_read(&mm->mmap_sem);
56 }
57--
581.7.9.5
59
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch
new file mode 100644
index 00000000..bb8d0260
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch
@@ -0,0 +1,45 @@
1From bf1dbf3f545a79e9ac5ff460053283f2760f095b Mon Sep 17 00:00:00 2001
2From: Dima Zavin <dima@android.com>
3Date: Mon, 30 Apr 2012 10:26:14 +0100
4Subject: [PATCH 073/117] ARM: 7409/1: Do not call flush_cache_user_range with
5 mmap_sem held
6
7commit 435a7ef52db7d86e67a009b36cac1457f8972391 upstream.
8
9We can't be holding the mmap_sem while calling flush_cache_user_range
10because the flush can fault. If we fault on a user address, the
11page fault handler will try to take mmap_sem again. Since both places
12acquire the read lock, most of the time it succeeds. However, if another
13thread tries to acquire the write lock on the mmap_sem (e.g. mmap) in
14between the call to flush_cache_user_range and the fault, the down_read
15in do_page_fault will deadlock.
16
17[will: removed drop of vma parameter as already queued by rmk (7365/1)]
18
19Acked-by: Catalin Marinas <catalin.marinas@arm.com>
20Signed-off-by: Dima Zavin <dima@android.com>
21Signed-off-by: John Stultz <john.stultz@linaro.org>
22Signed-off-by: Will Deacon <will.deacon@arm.com>
23Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 arch/arm/kernel/traps.c | 2 ++
27 1 file changed, 2 insertions(+)
28
29diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
30index f363ad9..160cb16 100644
31--- a/arch/arm/kernel/traps.c
32+++ b/arch/arm/kernel/traps.c
33@@ -488,7 +488,9 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
34 if (end > vma->vm_end)
35 end = vma->vm_end;
36
37+ up_read(&mm->mmap_sem);
38 flush_cache_user_range(start, end);
39+ return;
40 }
41 up_read(&mm->mmap_sem);
42 }
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch
new file mode 100644
index 00000000..615aa31b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch
@@ -0,0 +1,48 @@
1From 444d2b8e5c56b431d2aa79db0c1742c6159b661a Mon Sep 17 00:00:00 2001
2From: Josh Boyer <jwboyer@redhat.com>
3Date: Wed, 2 Nov 2011 14:32:00 -0400
4Subject: [PATCH 074/117] sony-laptop: Enable keyboard backlight by default
5
6commit 6fe6ae56a7cebaebc2e6daa11c423e4692f9b592 upstream.
7
8When the keyboard backlight support was originally added, the commit said
9to default it to on with a 10 second timeout. That actually wasn't the
10case, as the default value is commented out for the kbd_backlight parameter.
11Because it is a static variable, it gets set to 0 by default without some
12other form of initialization.
13
14However, it seems the function to set the value wasn't actually called
15immediately, so whatever state the keyboard was in initially would remain.
16Then commit df410d522410e67660 was introduced during the 2.6.39 timeframe to
17immediately set whatever value was present (as well as attempt to
18restore/reset the state on module removal or resume). That seems to have
19now forced the light off immediately when the module is loaded unless
20the option kbd_backlight=1 is specified.
21
22Let's enable it by default again (for the first time). This should solve
23https://bugzilla.redhat.com/show_bug.cgi?id=728478
24
25Signed-off-by: Josh Boyer <jwboyer@redhat.com>
26Acked-by: Mattia Dongili <malattia@linux.it>
27Signed-off-by: Matthew Garrett <mjg@redhat.com>
28Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
29---
30 drivers/platform/x86/sony-laptop.c | 2 +-
31 1 file changed, 1 insertion(+), 1 deletion(-)
32
33diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
34index c006dee..40c4705 100644
35--- a/drivers/platform/x86/sony-laptop.c
36+++ b/drivers/platform/x86/sony-laptop.c
37@@ -127,7 +127,7 @@ MODULE_PARM_DESC(minor,
38 "default is -1 (automatic)");
39 #endif
40
41-static int kbd_backlight; /* = 1 */
42+static int kbd_backlight = 1;
43 module_param(kbd_backlight, int, 0444);
44 MODULE_PARM_DESC(kbd_backlight,
45 "set this to 0 to disable keyboard backlight, "
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch
new file mode 100644
index 00000000..e86f89a8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch
@@ -0,0 +1,54 @@
1From b277e4c19f3668e1a58e03d8933a3c6cd612c5e2 Mon Sep 17 00:00:00 2001
2From: Sasha Levin <levinsasha928@gmail.com>
3Date: Sat, 5 May 2012 17:06:35 +0200
4Subject: [PATCH 075/117] init: don't try mounting device as nfs root unless
5 type fully matches
6
7commit 377485f6244af255b04d662cf19cddbbc4ae4310 upstream.
8
9Currently, we'll try mounting any device who's major device number is
10UNNAMED_MAJOR as NFS root. This would happen for non-NFS devices as
11well (such as 9p devices) but it wouldn't cause any issues since
12mounting the device as NFS would fail quickly and the code proceeded to
13doing the proper mount:
14
15 [ 101.522716] VFS: Unable to mount root fs via NFS, trying floppy.
16 [ 101.534499] VFS: Mounted root (9p filesystem) on device 0:18.
17
18Commit 6829a048102a ("NFS: Retry mounting NFSROOT") introduced retries
19when mounting NFS root, which means that now we don't immediately fail
20and instead it takes an additional 90+ seconds until we stop retrying,
21which has revealed the issue this patch fixes.
22
23This meant that it would take an additional 90 seconds to boot when
24we're not using a device type which gets detected in order before NFS.
25
26This patch modifies the NFS type check to require device type to be
27'Root_NFS' instead of requiring the device to have an UNNAMED_MAJOR
28major. This makes boot process cleaner since we now won't go through
29the NFS mounting code at all when the device isn't an NFS root
30("/dev/nfs").
31
32Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
33Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
34Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
35---
36 init/do_mounts.c | 2 +-
37 1 file changed, 1 insertion(+), 1 deletion(-)
38
39diff --git a/init/do_mounts.c b/init/do_mounts.c
40index db6e5ee..d6c229f 100644
41--- a/init/do_mounts.c
42+++ b/init/do_mounts.c
43@@ -470,7 +470,7 @@ void __init change_floppy(char *fmt, ...)
44 void __init mount_root(void)
45 {
46 #ifdef CONFIG_ROOT_NFS
47- if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
48+ if (ROOT_DEV == Root_NFS) {
49 if (mount_nfs_root())
50 return;
51
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch
new file mode 100644
index 00000000..0d731c2f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch
@@ -0,0 +1,40 @@
1From 0b0f028ae418e6b772241ed68bee5f2d0c6bcb3a Mon Sep 17 00:00:00 2001
2From: Sha Zhengju <handai.szj@taobao.com>
3Date: Thu, 10 May 2012 13:01:45 -0700
4Subject: [PATCH 076/117] memcg: free spare array to avoid memory leak
5
6commit 8c7577637ca31385e92769a77e2ab5b428e8b99c upstream.
7
8When the last event is unregistered, there is no need to keep the spare
9array anymore. So free it to avoid memory leak.
10
11Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
12Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
13Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name>
14Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
15Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 mm/memcontrol.c | 6 ++++++
19 1 file changed, 6 insertions(+)
20
21diff --git a/mm/memcontrol.c b/mm/memcontrol.c
22index 778554f..c8425b1 100644
23--- a/mm/memcontrol.c
24+++ b/mm/memcontrol.c
25@@ -4549,6 +4549,12 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp,
26 swap_buffers:
27 /* Swap primary and spare array */
28 thresholds->spare = thresholds->primary;
29+ /* If all events are unregistered, free the spare array */
30+ if (!new) {
31+ kfree(thresholds->spare);
32+ thresholds->spare = NULL;
33+ }
34+
35 rcu_assign_pointer(thresholds->primary, new);
36
37 /* To be sure that nobody uses thresholds */
38--
391.7.9.5
40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch
new file mode 100644
index 00000000..de652632
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch
@@ -0,0 +1,107 @@
1From 2ed9e3e61cd65b3a43998d48846744be1b263394 Mon Sep 17 00:00:00 2001
2From: Jan Kiszka <jan.kiszka@siemens.com>
3Date: Thu, 10 May 2012 10:04:36 -0300
4Subject: [PATCH 077/117] compat: Fix RT signal mask corruption via
5 sigprocmask
6
7commit b7dafa0ef3145c31d7753be0a08b3cbda51f0209 upstream.
8
9compat_sys_sigprocmask reads a smaller signal mask from userspace than
10sigprogmask accepts for setting. So the high word of blocked.sig[0]
11will be cleared, releasing any potentially blocked RT signal.
12
13This was discovered via userspace code that relies on get/setcontext.
14glibc's i386 versions of those functions use sigprogmask instead of
15rt_sigprogmask to save/restore signal mask and caused RT signal
16unblocking this way.
17
18As suggested by Linus, this replaces the sys_sigprocmask based compat
19version with one that open-codes the required logic, including the merge
20of the existing blocked set with the new one provided on SIG_SETMASK.
21
22Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
23Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 kernel/compat.c | 63 ++++++++++++++++++++++++++++++++++++++++---------------
27 1 file changed, 46 insertions(+), 17 deletions(-)
28
29diff --git a/kernel/compat.c b/kernel/compat.c
30index f346ced..a6d0649 100644
31--- a/kernel/compat.c
32+++ b/kernel/compat.c
33@@ -320,25 +320,54 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set)
34
35 #ifdef __ARCH_WANT_SYS_SIGPROCMASK
36
37-asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set,
38- compat_old_sigset_t __user *oset)
39+/*
40+ * sys_sigprocmask SIG_SETMASK sets the first (compat) word of the
41+ * blocked set of signals to the supplied signal set
42+ */
43+static inline void compat_sig_setmask(sigset_t *blocked, compat_sigset_word set)
44 {
45- old_sigset_t s;
46- long ret;
47- mm_segment_t old_fs;
48+ memcpy(blocked->sig, &set, sizeof(set));
49+}
50
51- if (set && get_user(s, set))
52- return -EFAULT;
53- old_fs = get_fs();
54- set_fs(KERNEL_DS);
55- ret = sys_sigprocmask(how,
56- set ? (old_sigset_t __user *) &s : NULL,
57- oset ? (old_sigset_t __user *) &s : NULL);
58- set_fs(old_fs);
59- if (ret == 0)
60- if (oset)
61- ret = put_user(s, oset);
62- return ret;
63+asmlinkage long compat_sys_sigprocmask(int how,
64+ compat_old_sigset_t __user *nset,
65+ compat_old_sigset_t __user *oset)
66+{
67+ old_sigset_t old_set, new_set;
68+ sigset_t new_blocked;
69+
70+ old_set = current->blocked.sig[0];
71+
72+ if (nset) {
73+ if (get_user(new_set, nset))
74+ return -EFAULT;
75+ new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP));
76+
77+ new_blocked = current->blocked;
78+
79+ switch (how) {
80+ case SIG_BLOCK:
81+ sigaddsetmask(&new_blocked, new_set);
82+ break;
83+ case SIG_UNBLOCK:
84+ sigdelsetmask(&new_blocked, new_set);
85+ break;
86+ case SIG_SETMASK:
87+ compat_sig_setmask(&new_blocked, new_set);
88+ break;
89+ default:
90+ return -EINVAL;
91+ }
92+
93+ set_current_blocked(&new_blocked);
94+ }
95+
96+ if (oset) {
97+ if (put_user(old_set, oset))
98+ return -EFAULT;
99+ }
100+
101+ return 0;
102 }
103
104 #endif
105--
1061.7.9.5
107
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
new file mode 100644
index 00000000..d7a8016c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
@@ -0,0 +1,43 @@
1From c95c67d82938539844654f8d12a831e06ddae45a Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.cz>
3Date: Thu, 8 Dec 2011 21:13:46 +0100
4Subject: [PATCH 078/117] ext3: Fix error handling on inode bitmap corruption
5
6commit 1415dd8705394399d59a3df1ab48d149e1e41e77 upstream.
7
8When insert_inode_locked() fails in ext3_new_inode() it most likely
9means inode bitmap got corrupted and we allocated again inode which
10is already in use. Also doing unlock_new_inode() during error recovery
11is wrong since inode does not have I_NEW set. Fix the problem by jumping
12to fail: (instead of fail_drop:) which declares filesystem error and
13does not call unlock_new_inode().
14
15Reviewed-by: Eric Sandeen <sandeen@redhat.com>
16Signed-off-by: Jan Kara <jack@suse.cz>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 fs/ext3/ialloc.c | 8 ++++++--
20 1 file changed, 6 insertions(+), 2 deletions(-)
21
22diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
23index 5c866e0..adae962 100644
24--- a/fs/ext3/ialloc.c
25+++ b/fs/ext3/ialloc.c
26@@ -525,8 +525,12 @@ got:
27 if (IS_DIRSYNC(inode))
28 handle->h_sync = 1;
29 if (insert_inode_locked(inode) < 0) {
30- err = -EINVAL;
31- goto fail_drop;
32+ /*
33+ * Likely a bitmap corruption causing inode to be allocated
34+ * twice.
35+ */
36+ err = -EIO;
37+ goto fail;
38 }
39 spin_lock(&sbi->s_next_gen_lock);
40 inode->i_generation = sbi->s_next_generation++;
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch
new file mode 100644
index 00000000..4d6aacf1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch
@@ -0,0 +1,42 @@
1From 92d372ef4ce9cea8d08163f727e4eeac7e9a2472 Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.cz>
3Date: Sun, 18 Dec 2011 17:37:02 -0500
4Subject: [PATCH 079/117] ext4: fix error handling on inode bitmap corruption
5
6commit acd6ad83517639e8f09a8c5525b1dccd81cd2a10 upstream.
7
8When insert_inode_locked() fails in ext4_new_inode() it most likely means inode
9bitmap got corrupted and we allocated again inode which is already in use. Also
10doing unlock_new_inode() during error recovery is wrong since the inode does
11not have I_NEW set. Fix the problem by jumping to fail: (instead of fail_drop:)
12which declares filesystem error and does not call unlock_new_inode().
13
14Signed-off-by: Jan Kara <jack@suse.cz>
15Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 fs/ext4/ialloc.c | 8 ++++++--
19 1 file changed, 6 insertions(+), 2 deletions(-)
20
21diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
22index 00beb4f..8fb6844 100644
23--- a/fs/ext4/ialloc.c
24+++ b/fs/ext4/ialloc.c
25@@ -885,8 +885,12 @@ got:
26 if (IS_DIRSYNC(inode))
27 ext4_handle_sync(handle);
28 if (insert_inode_locked(inode) < 0) {
29- err = -EINVAL;
30- goto fail_drop;
31+ /*
32+ * Likely a bitmap corruption causing inode to be allocated
33+ * twice.
34+ */
35+ err = -EIO;
36+ goto fail;
37 }
38 spin_lock(&sbi->s_next_gen_lock);
39 inode->i_generation = sbi->s_next_generation++;
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch
new file mode 100644
index 00000000..1460ce35
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch
@@ -0,0 +1,42 @@
1From 1155d70b0cfab4cef0edb62753bc9b5053d6fa8e Mon Sep 17 00:00:00 2001
2From: Lan Tianyu <tianyu.lan@intel.com>
3Date: Sat, 21 Jan 2012 09:23:56 +0800
4Subject: [PATCH 080/117] ACPI / PM: Add Sony Vaio VPCCW29FX to nonvs
5 blacklist.
6
7commit 93f770846e8dedc5d9117bd4ad9d7efd18420627 upstream.
8
9Sony Vaio VPCCW29FX does not resume correctly without
10acpi_sleep=nonvs, so add it to the ACPI sleep blacklist.
11
12https://bugzilla.kernel.org/show_bug.cgi?id=34722
13
14Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
15Signed-off-by: Len Brown <len.brown@intel.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/acpi/sleep.c | 8 ++++++++
19 1 file changed, 8 insertions(+)
20
21diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
22index 0a7ed69..ca191ff 100644
23--- a/drivers/acpi/sleep.c
24+++ b/drivers/acpi/sleep.c
25@@ -438,6 +438,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
26 },
27 {
28 .callback = init_nvs_nosave,
29+ .ident = "Sony Vaio VPCCW29FX",
30+ .matches = {
31+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
32+ DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"),
33+ },
34+ },
35+ {
36+ .callback = init_nvs_nosave,
37 .ident = "Averatec AV1020-ED2",
38 .matches = {
39 DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"),
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch
new file mode 100644
index 00000000..f16c6086
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch
@@ -0,0 +1,42 @@
1From a9b96c2354127a1d9d0401564b6359403aecdb66 Mon Sep 17 00:00:00 2001
2From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com>
3Date: Mon, 28 Nov 2011 10:15:20 -0600
4Subject: [PATCH 081/117] hpsa: Add IRQF_SHARED back in for the non-MSI(X)
5 interrupt handler
6
7commit 45bcf018d1a4779d592764ef57517c92589d55d7 upstream.
8
9IRQF_SHARED is required for older controllers that don't support MSI(X)
10and which may end up sharing an interrupt. All the controllers hpsa
11normally supports have MSI(X) capability, but older controllers may be
12encountered via the hpsa_allow_any=1 module parameter.
13
14Also remove deprecated IRQF_DISABLED.
15
16Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
17Signed-off-by: James Bottomley <JBottomley@Parallels.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/scsi/hpsa.c | 4 ++--
21 1 file changed, 2 insertions(+), 2 deletions(-)
22
23diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
24index dc9dea3..b4d2c86 100644
25--- a/drivers/scsi/hpsa.c
26+++ b/drivers/scsi/hpsa.c
27@@ -4068,10 +4068,10 @@ static int hpsa_request_irq(struct ctlr_info *h,
28
29 if (h->msix_vector || h->msi_vector)
30 rc = request_irq(h->intr[h->intr_mode], msixhandler,
31- IRQF_DISABLED, h->devname, h);
32+ 0, h->devname, h);
33 else
34 rc = request_irq(h->intr[h->intr_mode], intxhandler,
35- IRQF_DISABLED, h->devname, h);
36+ IRQF_SHARED, h->devname, h);
37 if (rc) {
38 dev_err(&h->pdev->dev, "unable to get irq %d for %s\n",
39 h->intr[h->intr_mode], h->devname);
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch
new file mode 100644
index 00000000..b25a680a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch
@@ -0,0 +1,42 @@
1From ab66f47089f09bceebe3bee38d5e76e08ec748d0 Mon Sep 17 00:00:00 2001
2From: Kazuya Mio <k-mio@sx.jp.nec.com>
3Date: Thu, 1 Dec 2011 16:51:07 +0900
4Subject: [PATCH 082/117] wake up s_wait_unfrozen when ->freeze_fs fails
5
6commit e1616300a20c80396109c1cf013ba9a36055a3da upstream.
7
8dd slept infinitely when fsfeeze failed because of EIO.
9To fix this problem, if ->freeze_fs fails, freeze_super() wakes up
10the tasks waiting for the filesystem to become unfrozen.
11
12When s_frozen isn't SB_UNFROZEN in __generic_file_aio_write(),
13the function sleeps until FITHAW ioctl wakes up s_wait_unfrozen.
14
15However, if ->freeze_fs fails, s_frozen is set to SB_UNFROZEN and then
16freeze_super() returns an error number. In this case, FITHAW ioctl returns
17EINVAL because s_frozen is already SB_UNFROZEN. There is no way to wake up
18s_wait_unfrozen, so __generic_file_aio_write() sleeps infinitely.
19
20Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com>
21Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 fs/super.c | 2 ++
25 1 file changed, 2 insertions(+)
26
27diff --git a/fs/super.c b/fs/super.c
28index afd0f1a..2a698f6 100644
29--- a/fs/super.c
30+++ b/fs/super.c
31@@ -1166,6 +1166,8 @@ int freeze_super(struct super_block *sb)
32 printk(KERN_ERR
33 "VFS:Filesystem freeze failed\n");
34 sb->s_frozen = SB_UNFROZEN;
35+ smp_wmb();
36+ wake_up(&sb->s_wait_unfrozen);
37 deactivate_locked_super(sb);
38 return ret;
39 }
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch
new file mode 100644
index 00000000..0d16878b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch
@@ -0,0 +1,35 @@
1From 3f974a0efbf9480d3a540a029f5a98da92ce772e Mon Sep 17 00:00:00 2001
2From: Dan Carpenter <dan.carpenter@oracle.com>
3Date: Mon, 30 Apr 2012 17:36:21 +0300
4Subject: [PATCH 083/117] cifs: fix revalidation test in cifs_llseek()
5
6commit 48a5730e5b71201e226ff06e245bf308feba5f10 upstream.
7
8This test is always true so it means we revalidate the length every
9time, which generates more network traffic. When it is SEEK_SET or
10SEEK_CUR, then we don't need to revalidate.
11
12Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
13Reviewed-by: Jeff Layton <jlayton@redhat.com>
14Signed-off-by: Steve French <sfrench@us.ibm.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 fs/cifs/cifsfs.c | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
21index b4c2c99..b1451af 100644
22--- a/fs/cifs/cifsfs.c
23+++ b/fs/cifs/cifsfs.c
24@@ -703,7 +703,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin)
25 * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate
26 * the cached file length
27 */
28- if (origin != SEEK_SET || origin != SEEK_CUR) {
29+ if (origin != SEEK_SET && origin != SEEK_CUR) {
30 int rc;
31 struct inode *inode = file->f_path.dentry->d_inode;
32
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch
new file mode 100644
index 00000000..d3a6229b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch
@@ -0,0 +1,123 @@
1From 69fa22d4b635612c73cb0427447c5916e18a217e Mon Sep 17 00:00:00 2001
2From: Jeff Mahoney <jeffm@suse.com>
3Date: Wed, 25 Apr 2012 14:32:09 +0000
4Subject: [PATCH 084/117] dl2k: Clean up rio_ioctl
5
6commit 1bb57e940e1958e40d51f2078f50c3a96a9b2d75 upstream.
7
8The dl2k driver's rio_ioctl call has a few issues:
9- No permissions checking
10- Implements SIOCGMIIREG and SIOCGMIIREG using the SIOCDEVPRIVATE numbers
11- Has a few ioctls that may have been used for debugging at one point
12 but have no place in the kernel proper.
13
14This patch removes all but the MII ioctls, renumbers them to use the
15standard ones, and adds the proper permission check for SIOCSMIIREG.
16
17We can also get rid of the dl2k-specific struct mii_data in favor of
18the generic struct mii_ioctl_data.
19
20Since we have the phyid on hand, we can add the SIOCGMIIPHY ioctl too.
21
22Most of the MII code for the driver could probably be converted to use
23the generic MII library but I don't have a device to test the results.
24
25Reported-by: Stephan Mueller <stephan.mueller@atsec.com>
26Signed-off-by: Jeff Mahoney <jeffm@suse.com>
27Signed-off-by: David S. Miller <davem@davemloft.net>
28Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
29---
30 drivers/net/ethernet/dlink/dl2k.c | 52 +++++++------------------------------
31 drivers/net/ethernet/dlink/dl2k.h | 7 -----
32 2 files changed, 9 insertions(+), 50 deletions(-)
33
34diff --git a/drivers/net/ethernet/dlink/dl2k.c b/drivers/net/ethernet/dlink/dl2k.c
35index b2dc2c8..2e09edb 100644
36--- a/drivers/net/ethernet/dlink/dl2k.c
37+++ b/drivers/net/ethernet/dlink/dl2k.c
38@@ -1259,55 +1259,21 @@ rio_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
39 {
40 int phy_addr;
41 struct netdev_private *np = netdev_priv(dev);
42- struct mii_data *miidata = (struct mii_data *) &rq->ifr_ifru;
43-
44- struct netdev_desc *desc;
45- int i;
46+ struct mii_ioctl_data *miidata = if_mii(rq);
47
48 phy_addr = np->phy_addr;
49 switch (cmd) {
50- case SIOCDEVPRIVATE:
51- break;
52-
53- case SIOCDEVPRIVATE + 1:
54- miidata->out_value = mii_read (dev, phy_addr, miidata->reg_num);
55+ case SIOCGMIIPHY:
56+ miidata->phy_id = phy_addr;
57 break;
58- case SIOCDEVPRIVATE + 2:
59- mii_write (dev, phy_addr, miidata->reg_num, miidata->in_value);
60+ case SIOCGMIIREG:
61+ miidata->val_out = mii_read (dev, phy_addr, miidata->reg_num);
62 break;
63- case SIOCDEVPRIVATE + 3:
64- break;
65- case SIOCDEVPRIVATE + 4:
66- break;
67- case SIOCDEVPRIVATE + 5:
68- netif_stop_queue (dev);
69+ case SIOCSMIIREG:
70+ if (!capable(CAP_NET_ADMIN))
71+ return -EPERM;
72+ mii_write (dev, phy_addr, miidata->reg_num, miidata->val_in);
73 break;
74- case SIOCDEVPRIVATE + 6:
75- netif_wake_queue (dev);
76- break;
77- case SIOCDEVPRIVATE + 7:
78- printk
79- ("tx_full=%x cur_tx=%lx old_tx=%lx cur_rx=%lx old_rx=%lx\n",
80- netif_queue_stopped(dev), np->cur_tx, np->old_tx, np->cur_rx,
81- np->old_rx);
82- break;
83- case SIOCDEVPRIVATE + 8:
84- printk("TX ring:\n");
85- for (i = 0; i < TX_RING_SIZE; i++) {
86- desc = &np->tx_ring[i];
87- printk
88- ("%02x:cur:%08x next:%08x status:%08x frag1:%08x frag0:%08x",
89- i,
90- (u32) (np->tx_ring_dma + i * sizeof (*desc)),
91- (u32)le64_to_cpu(desc->next_desc),
92- (u32)le64_to_cpu(desc->status),
93- (u32)(le64_to_cpu(desc->fraginfo) >> 32),
94- (u32)le64_to_cpu(desc->fraginfo));
95- printk ("\n");
96- }
97- printk ("\n");
98- break;
99-
100 default:
101 return -EOPNOTSUPP;
102 }
103diff --git a/drivers/net/ethernet/dlink/dl2k.h b/drivers/net/ethernet/dlink/dl2k.h
104index ba0adca..30c2da3 100644
105--- a/drivers/net/ethernet/dlink/dl2k.h
106+++ b/drivers/net/ethernet/dlink/dl2k.h
107@@ -365,13 +365,6 @@ struct ioctl_data {
108 char *data;
109 };
110
111-struct mii_data {
112- __u16 reserved;
113- __u16 reg_num;
114- __u16 in_value;
115- __u16 out_value;
116-};
117-
118 /* The Rx and Tx buffer descriptors. */
119 struct netdev_desc {
120 __le64 next_desc;
121--
1221.7.9.5
123
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch
new file mode 100644
index 00000000..0c09aac1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch
@@ -0,0 +1,41 @@
1From ad7129ee930fa9b9efd04490a4ddcd5d5a9039a9 Mon Sep 17 00:00:00 2001
2From: Danny Kukawka <danny.kukawka@bisect.de>
3Date: Tue, 24 Jan 2012 16:44:42 +0100
4Subject: [PATCH 085/117] OMAPDSS: VENC: fix NULL pointer dereference in DSS2
5 VENC sysfs debug attr on OMAP4
6
7commit cc1d3e032df53d83d0ca4d537d8eb67eb5b3e808 upstream.
8
9Commit ba02fa37de80bea10d706f39f076dd848348320a disabled the
10venc driver registration on OMAP4. Since the driver never gets
11probed/initialised your get a dereferenceed NULL pointer if you
12try to get info from /sys/kernel/debug/omapdss/venc
13
14Return info message about disabled venc if venc_dump_regs() gets called.
15
16Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
17Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/video/omap2/dss/venc.c | 5 +++++
21 1 file changed, 5 insertions(+)
22
23diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
24index 7533458..7152b53 100644
25--- a/drivers/video/omap2/dss/venc.c
26+++ b/drivers/video/omap2/dss/venc.c
27@@ -679,6 +679,11 @@ void venc_dump_regs(struct seq_file *s)
28 {
29 #define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, venc_read_reg(r))
30
31+ if (cpu_is_omap44xx()) {
32+ seq_printf(s, "VENC currently disabled on OMAP44xx\n");
33+ return;
34+ }
35+
36 if (venc_runtime_get())
37 return;
38
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch
new file mode 100644
index 00000000..f2be4cd0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch
@@ -0,0 +1,36 @@
1From 64affee5c2afb0dff67a4c3669e3c44c98575809 Mon Sep 17 00:00:00 2001
2From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
3Date: Mon, 26 Mar 2012 14:55:25 +0900
4Subject: [PATCH 086/117] i2c-eg20t: change timeout value 50msec to 1000msec
5
6commit 8a52f9f347da721b199b7f9dcc0168bbe7d0baae upstream.
7
8Currently, during i2c works alone, wait-event timeout is not occurred.
9However, as CPU load increases, timeout occurs frequently.
10So, I modified like this patch.
11Modifying like this patch, I've never seen the timeout event with high
12load test.
13
14Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
15Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/i2c/busses/i2c-eg20t.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c
22index 730215e..2cda65bf 100644
23--- a/drivers/i2c/busses/i2c-eg20t.c
24+++ b/drivers/i2c/busses/i2c-eg20t.c
25@@ -315,7 +315,7 @@ static s32 pch_i2c_wait_for_xfer_complete(struct i2c_algo_pch_data *adap)
26 {
27 long ret;
28 ret = wait_event_timeout(pch_event,
29- (adap->pch_event_flag != 0), msecs_to_jiffies(50));
30+ (adap->pch_event_flag != 0), msecs_to_jiffies(1000));
31
32 if (ret == 0) {
33 pch_err(adap, "timeout: %x\n", adap->pch_event_flag);
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch
new file mode 100644
index 00000000..d48f0e01
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch
@@ -0,0 +1,100 @@
1From b8fd6d0d306fe861b9a5d692b5d14c169a14bc7e Mon Sep 17 00:00:00 2001
2From: Ben Widawsky <ben@bwidawsk.net>
3Date: Sat, 14 Apr 2012 18:41:32 -0700
4Subject: [PATCH 087/117] drm/i915: [GEN7] Use HW scheduler for fixed function
5 shaders
6
7commit a1e969e0332de7a430e62822cee8f2ec8d83cd7c upstream.
8
9This originally started as a patch from Bernard as a way of simply
10setting the VS scheduler. After submitting the RFC patch, we decided to
11also modify the DS scheduler. To be most explicit, I've made the patch
12explicitly set all scheduler modes, and included the defines for other
13modes (in case someone feels frisky later).
14
15The rest of the story gets a bit weird. The first version of the patch
16showed an almost unbelievable performance improvement. Since rebasing my
17branch it appears the performance improvement has gone, unfortunately.
18But setting these bits seem to be the right thing to do given that the
19docs describe corruption that can occur with the default settings.
20
21In summary, I am seeing no more perf improvements (or regressions) in my
22limited testing, but we believe this should be set to prevent rendering
23corruption, therefore cc stable.
24
25v1: Clear bit 4 also (Ken + Eugeni)
26Do a full clear + set of the bits we want (Me).
27
28Cc: Bernard Kilarski <bernard.r.kilarski@intel.com>
29Reviewed-by (RFC): Kenneth Graunke <kenneth@whitecape.org>
30Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
31Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
32Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
33Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
34Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
35---
36 drivers/gpu/drm/i915/i915_reg.h | 15 +++++++++++++++
37 drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++
38 2 files changed, 29 insertions(+)
39
40diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
41index cbe5a88..a1d53b6 100644
42--- a/drivers/gpu/drm/i915/i915_reg.h
43+++ b/drivers/gpu/drm/i915/i915_reg.h
44@@ -570,6 +570,21 @@
45
46 #define GEN6_BSD_RNCID 0x12198
47
48+#define GEN7_FF_THREAD_MODE 0x20a0
49+#define GEN7_FF_SCHED_MASK 0x0077070
50+#define GEN7_FF_TS_SCHED_HS1 (0x5<<16)
51+#define GEN7_FF_TS_SCHED_HS0 (0x3<<16)
52+#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16)
53+#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */
54+#define GEN7_FF_VS_SCHED_HS1 (0x5<<12)
55+#define GEN7_FF_VS_SCHED_HS0 (0x3<<12)
56+#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */
57+#define GEN7_FF_VS_SCHED_HW (0x0<<12)
58+#define GEN7_FF_DS_SCHED_HS1 (0x5<<4)
59+#define GEN7_FF_DS_SCHED_HS0 (0x3<<4)
60+#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */
61+#define GEN7_FF_DS_SCHED_HW (0x0<<4)
62+
63 /*
64 * Framebuffer compression (915+ only)
65 */
66diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
67index 390768f..68fa8f8 100644
68--- a/drivers/gpu/drm/i915/intel_display.c
69+++ b/drivers/gpu/drm/i915/intel_display.c
70@@ -8245,6 +8245,18 @@ static void gen6_init_clock_gating(struct drm_device *dev)
71 }
72 }
73
74+static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)
75+{
76+ uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE);
77+
78+ reg &= ~GEN7_FF_SCHED_MASK;
79+ reg |= GEN7_FF_TS_SCHED_HW;
80+ reg |= GEN7_FF_VS_SCHED_HW;
81+ reg |= GEN7_FF_DS_SCHED_HW;
82+
83+ I915_WRITE(GEN7_FF_THREAD_MODE, reg);
84+}
85+
86 static void ivybridge_init_clock_gating(struct drm_device *dev)
87 {
88 struct drm_i915_private *dev_priv = dev->dev_private;
89@@ -8285,6 +8297,8 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
90 DISPPLANE_TRICKLE_FEED_DISABLE);
91 intel_flush_display_plane(dev_priv, pipe);
92 }
93+
94+ gen7_setup_fixed_func_scheduler(dev_priv);
95 }
96
97 static void g4x_init_clock_gating(struct drm_device *dev)
98--
991.7.9.5
100
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch
new file mode 100644
index 00000000..4fcc89ef
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch
@@ -0,0 +1,99 @@
1From 418111eaa285eb1418ef4634eb2a24e955d0c0a4 Mon Sep 17 00:00:00 2001
2From: Nicolas Pitre <nicolas.pitre@linaro.org>
3Date: Mon, 16 Apr 2012 19:16:54 -0400
4Subject: [PATCH 088/117] mmc: sdio: avoid spurious calls to interrupt
5 handlers
6
7commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream.
8
9Commit 06e8935feb ("optimized SDIO IRQ handling for single irq")
10introduced some spurious calls to SDIO function interrupt handlers,
11such as when the SDIO IRQ thread is started, or the safety check
12performed upon a system resume. Let's add a flag to perform the
13optimization only when a real interrupt is signaled by the host
14driver and we know there is no point confirming it.
15
16Reported-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
17Signed-off-by: Nicolas Pitre <nico@linaro.org>
18Signed-off-by: Chris Ball <cjb@laptop.org>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/mmc/core/sdio.c | 2 +-
22 drivers/mmc/core/sdio_irq.c | 11 +++++++----
23 include/linux/mmc/host.h | 2 ++
24 3 files changed, 10 insertions(+), 5 deletions(-)
25
26diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
27index 3ab565e..558a495 100644
28--- a/drivers/mmc/core/sdio.c
29+++ b/drivers/mmc/core/sdio.c
30@@ -663,7 +663,7 @@ static int mmc_sdio_resume(struct mmc_host *host)
31 }
32
33 if (!err && host->sdio_irqs)
34- mmc_signal_sdio_irq(host);
35+ wake_up_process(host->sdio_irq_thread);
36 mmc_release_host(host);
37
38 /*
39diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
40index 68f81b9..9dd0462 100644
41--- a/drivers/mmc/core/sdio_irq.c
42+++ b/drivers/mmc/core/sdio_irq.c
43@@ -28,18 +28,20 @@
44
45 #include "sdio_ops.h"
46
47-static int process_sdio_pending_irqs(struct mmc_card *card)
48+static int process_sdio_pending_irqs(struct mmc_host *host)
49 {
50+ struct mmc_card *card = host->card;
51 int i, ret, count;
52 unsigned char pending;
53 struct sdio_func *func;
54
55 /*
56 * Optimization, if there is only 1 function interrupt registered
57- * call irq handler directly
58+ * and we know an IRQ was signaled then call irq handler directly.
59+ * Otherwise do the full probe.
60 */
61 func = card->sdio_single_irq;
62- if (func) {
63+ if (func && host->sdio_irq_pending) {
64 func->irq_handler(func);
65 return 1;
66 }
67@@ -116,7 +118,8 @@ static int sdio_irq_thread(void *_host)
68 ret = __mmc_claim_host(host, &host->sdio_irq_thread_abort);
69 if (ret)
70 break;
71- ret = process_sdio_pending_irqs(host->card);
72+ ret = process_sdio_pending_irqs(host);
73+ host->sdio_irq_pending = false;
74 mmc_release_host(host);
75
76 /*
77diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
78index a3ac9c4..deb6282 100644
79--- a/include/linux/mmc/host.h
80+++ b/include/linux/mmc/host.h
81@@ -303,6 +303,7 @@ struct mmc_host {
82
83 unsigned int sdio_irqs;
84 struct task_struct *sdio_irq_thread;
85+ bool sdio_irq_pending;
86 atomic_t sdio_irq_thread_abort;
87
88 mmc_pm_flag_t pm_flags; /* requested pm features */
89@@ -356,6 +357,7 @@ extern int mmc_cache_ctrl(struct mmc_host *, u8);
90 static inline void mmc_signal_sdio_irq(struct mmc_host *host)
91 {
92 host->ops->enable_sdio_irq(host, 0);
93+ host->sdio_irq_pending = true;
94 wake_up_process(host->sdio_irq_thread);
95 }
96
97--
981.7.9.5
99
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch
new file mode 100644
index 00000000..a1606fd5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch
@@ -0,0 +1,31 @@
1From f408079974e4190a820716d82a01af3f3201cd56 Mon Sep 17 00:00:00 2001
2From: Michael Krufky <mkrufky@linuxtv.org>
3Date: Thu, 22 Mar 2012 13:55:05 -0300
4Subject: [PATCH 089/117] smsusb: add autodetection support for USB ID
5 2040:c0a0
6
7commit 4d1b58b84472d1d300a66e1c5fd765b21e74ba15 upstream.
8
9Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
10Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
11Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
12---
13 drivers/media/dvb/siano/smsusb.c | 2 ++
14 1 file changed, 2 insertions(+)
15
16diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
17index 51c7121..b7d1e3e 100644
18--- a/drivers/media/dvb/siano/smsusb.c
19+++ b/drivers/media/dvb/siano/smsusb.c
20@@ -542,6 +542,8 @@ static const struct usb_device_id smsusb_id_table[] __devinitconst = {
21 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
22 { USB_DEVICE(0x2040, 0xc090),
23 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
24+ { USB_DEVICE(0x2040, 0xc0a0),
25+ .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
26 { } /* Terminating entry */
27 };
28
29--
301.7.9.5
31
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch
new file mode 100644
index 00000000..08a9b59d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch
@@ -0,0 +1,34 @@
1From 1565ef649160b0fb7c0911ce172ecc475db2741e Mon Sep 17 00:00:00 2001
2From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
3Date: Wed, 21 Mar 2012 09:50:36 -0300
4Subject: [PATCH 090/117] uvcvideo: Fix ENUMINPUT handling
5
6commit 31c5f0c5e25ed71eeced170f113bb590f2f1f6f3 upstream.
7
8Properly validate the user-supplied index against the number of inputs.
9The code used the pin local variable instead of the index by mistake.
10
11Reported-by: Jozef Vesely <vesely@gjh.sk>
12Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
13Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/media/video/uvc/uvc_v4l2.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
20index cf7788f..1030479 100644
21--- a/drivers/media/video/uvc/uvc_v4l2.c
22+++ b/drivers/media/video/uvc/uvc_v4l2.c
23@@ -689,7 +689,7 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
24 break;
25 }
26 pin = iterm->id;
27- } else if (pin < selector->bNrInPins) {
28+ } else if (index < selector->bNrInPins) {
29 pin = selector->baSourceID[index];
30 list_for_each_entry(iterm, &chain->entities, chain) {
31 if (!UVC_ENTITY_IS_ITERM(iterm))
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch
new file mode 100644
index 00000000..41055a0e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch
@@ -0,0 +1,63 @@
1From e7fcb3c81686f5853ff08909c0f580536291be51 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Wed, 9 May 2012 21:45:43 +0100
4Subject: [PATCH 091/117] drm/i915: Avoid a double-read of PCH_IIR during
5 interrupt handling
6
7commit 9adab8b5a7fde248504f484e197589f3e3c922e2 upstream.
8
9Currently the code re-reads PCH_IIR during the hotplug interrupt
10processing. Not only is this a wasted read, but introduces a potential
11for handling a spurious interrupt as we then may not clear all the
12interrupts processed (since the re-read IIR may contains more interrupts
13asserted than we clear using the result of the original read).
14
15Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
16Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
17Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/gpu/drm/i915/i915_irq.c | 9 +++------
21 1 file changed, 3 insertions(+), 6 deletions(-)
22
23diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
24index d47a53b..d3820c2 100644
25--- a/drivers/gpu/drm/i915/i915_irq.c
26+++ b/drivers/gpu/drm/i915/i915_irq.c
27@@ -424,14 +424,11 @@ static void gen6_pm_rps_work(struct work_struct *work)
28 mutex_unlock(&dev_priv->dev->struct_mutex);
29 }
30
31-static void pch_irq_handler(struct drm_device *dev)
32+static void pch_irq_handler(struct drm_device *dev, u32 pch_iir)
33 {
34 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
35- u32 pch_iir;
36 int pipe;
37
38- pch_iir = I915_READ(SDEIIR);
39-
40 if (pch_iir & SDE_AUDIO_POWER_MASK)
41 DRM_DEBUG_DRIVER("PCH audio power change on port %d\n",
42 (pch_iir & SDE_AUDIO_POWER_MASK) >>
43@@ -529,7 +526,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
44 if (de_iir & DE_PCH_EVENT_IVB) {
45 if (pch_iir & SDE_HOTPLUG_MASK_CPT)
46 queue_work(dev_priv->wq, &dev_priv->hotplug_work);
47- pch_irq_handler(dev);
48+ pch_irq_handler(dev, pch_iir);
49 }
50
51 if (pm_iir & GEN6_PM_DEFERRED_EVENTS) {
52@@ -629,7 +626,7 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS)
53 if (de_iir & DE_PCH_EVENT) {
54 if (pch_iir & hotplug_mask)
55 queue_work(dev_priv->wq, &dev_priv->hotplug_work);
56- pch_irq_handler(dev);
57+ pch_irq_handler(dev, pch_iir);
58 }
59
60 if (de_iir & DE_PCU_EVENT) {
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch
new file mode 100644
index 00000000..2a97b801
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch
@@ -0,0 +1,35 @@
1From 6f8ba55029ac1a15f55de85122401036a08d6b89 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Sun, 6 May 2012 16:01:05 -0500
4Subject: [PATCH 092/117] b43legacy: Fix error due to MMIO access with SSB
5 unpowered
6
7commit 8f4b20388fa77226a3605627a33a23f90d559e50 upstream.
8
9There is a dummy read of a PCI MMIO register that occurs before the SSB bus
10has been powered, which is an error. This bug has not been seen earlier,
11but was apparently exposed when udev was updated to version 182.
12
13Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
14Signed-off-by: John W. Linville <linville@tuxdriver.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/net/wireless/b43legacy/main.c | 2 --
18 1 file changed, 2 deletions(-)
19
20diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
21index 20f0243..c5ce163 100644
22--- a/drivers/net/wireless/b43legacy/main.c
23+++ b/drivers/net/wireless/b43legacy/main.c
24@@ -1564,8 +1564,6 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev)
25 const char *filename;
26 int err;
27
28- /* do dummy read */
29- ssb_read32(dev->dev, SSB_TMSHIGH);
30 if (!fw->ucode) {
31 if (rev == 2)
32 filename = "ucode2";
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch
new file mode 100644
index 00000000..b3e3fa6f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch
@@ -0,0 +1,45 @@
1From 3a36f1d3f5cc6f221848df7c4cdc1269fc2085e9 Mon Sep 17 00:00:00 2001
2From: Thomas Gleixner <tglx@linutronix.de>
3Date: Thu, 3 May 2012 12:22:06 +0200
4Subject: [PATCH 093/117] gpio: mpc8xxx: Prevent NULL pointer deref in demux
5 handler
6
7commit d6de85e85edcc38c9edcde45a0a568818fcddc13 upstream.
8
9commit cfadd838(powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO
10driver) added an unconditional call of chip->irq_eoi() to the demux
11handler.
12
13This leads to a NULL pointer derefernce on MPC512x platforms which use
14this driver as well.
15
16Make it conditional.
17
18Reported-by: Thomas Wucher <thwucher@linutronix.de>
19Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
20Cc: Felix Radensky <felix@embedded-sol.com>
21Cc: Kumar Gala <galak@kernel.crashing.org>
22Cc: Grant Likely <grant.likely@secretlab.ca>
23Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/gpio/gpio-mpc8xxx.c | 3 ++-
27 1 file changed, 2 insertions(+), 1 deletion(-)
28
29diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
30index 5cd04b6..edcffd6 100644
31--- a/drivers/gpio/gpio-mpc8xxx.c
32+++ b/drivers/gpio/gpio-mpc8xxx.c
33@@ -163,7 +163,8 @@ static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
34 if (mask)
35 generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq,
36 32 - ffs(mask)));
37- chip->irq_eoi(&desc->irq_data);
38+ if (chip->irq_eoi)
39+ chip->irq_eoi(&desc->irq_data);
40 }
41
42 static void mpc8xxx_irq_unmask(struct irq_data *d)
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch
new file mode 100644
index 00000000..9e3e30e6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch
@@ -0,0 +1,52 @@
1From 031b0156d47e41f3815fcee8b2043c0b7d21dba0 Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Sun, 13 May 2012 22:29:25 +0200
4Subject: [PATCH 094/117] drm/i915: don't clobber the pipe param in
5 sanitize_modesetting
6
7commit a9dcf84b14ef4e9a609910367576995e6f32f3dc upstream.
8
9... we need it later on in the function to clean up pipe <-> plane
10associations. This regression has been introduced in
11
12commit f47166d2b0001fcb752b40c5a2d4db986dfbea68
13Author: Chris Wilson <chris@chris-wilson.co.uk>
14Date: Thu Mar 22 15:00:50 2012 +0000
15
16 drm/i915: Sanitize BIOS debugging bits from PIPECONF
17
18Spotted by staring at debug output of an (as it turns out) totally
19unrelated bug.
20
21v2: I've totally failed to do the s/pipe/i/ correctly, spotted by
22Chris Wilson.
23
24Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
25Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
26Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28---
29 drivers/gpu/drm/i915/intel_display.c | 5 +++--
30 1 file changed, 3 insertions(+), 2 deletions(-)
31
32diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
33index 68fa8f8..3ff980d 100644
34--- a/drivers/gpu/drm/i915/intel_display.c
35+++ b/drivers/gpu/drm/i915/intel_display.c
36@@ -7280,10 +7280,11 @@ static void intel_sanitize_modesetting(struct drm_device *dev,
37 {
38 struct drm_i915_private *dev_priv = dev->dev_private;
39 u32 reg, val;
40+ int i;
41
42 /* Clear any frame start delays used for debugging left by the BIOS */
43- for_each_pipe(pipe) {
44- reg = PIPECONF(pipe);
45+ for_each_pipe(i) {
46+ reg = PIPECONF(i);
47 I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK);
48 }
49
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch
new file mode 100644
index 00000000..3dc340b9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch
@@ -0,0 +1,42 @@
1From ee003c924af5accb5545a0f07b09f488cdd16e76 Mon Sep 17 00:00:00 2001
2From: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
3Date: Fri, 11 May 2012 15:29:50 -0700
4Subject: [PATCH 095/117] spi/spi-fsl-spi: reference correct pdata in
5 fsl_spi_cs_control
6
7commit 067aa4815a9bc12a569d8a06afef50ba5773afbf upstream.
8
9Commit 178db7d3, "spi: Fix device unregistration when unregistering
10the bus master", changed spi device initialization of dev.parent pointer
11to be the master's device pointer instead of his parent.
12
13This introduced a bug in spi-fsl-spi, since its usage of spi device
14pointer was not updated accordingly. This was later fixed by commit
155039a86, "spi/mpc83xx: fix NULL pdata dereference bug", but it missed
16another spot on fsl_spi_cs_control function where we also need to update
17usage of spi device pointer. This change address that.
18
19Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
20Acked-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
21Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 drivers/spi/spi-fsl-spi.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c
28index 5f748c0..6a62934 100644
29--- a/drivers/spi/spi-fsl-spi.c
30+++ b/drivers/spi/spi-fsl-spi.c
31@@ -933,7 +933,7 @@ err:
32
33 static void fsl_spi_cs_control(struct spi_device *spi, bool on)
34 {
35- struct device *dev = spi->dev.parent;
36+ struct device *dev = spi->dev.parent->parent;
37 struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(dev->platform_data);
38 u16 cs = spi->chip_select;
39 int gpio = pinfo->gpios[cs];
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch
new file mode 100644
index 00000000..64f01ae5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch
@@ -0,0 +1,90 @@
1From ccee9896b442dd46dc0fd4c7ae4b9e8e470fab2b Mon Sep 17 00:00:00 2001
2From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
3Date: Mon, 21 May 2012 16:54:10 +0100
4Subject: [PATCH 096/117] xen: do not map the same GSI twice in PVHVM guests.
5
6commit 68c2c39a76b094e9b2773e5846424ea674bf2c46 upstream.
7
8PV on HVM guests map GSIs into event channels. At restore time the
9event channels are resumed by restore_pirqs.
10
11Device drivers might try to register the same GSI again through ACPI at
12restore time, but the GSI has already been mapped and bound by
13restore_pirqs. This patch detects these situations and avoids
14 mapping the same GSI multiple times.
15
16Without this patch we get:
17(XEN) irq.c:2235: dom4: pirq 23 or emuirq 28 already mapped
18and waste a pirq.
19
20Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
21Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 arch/x86/pci/xen.c | 4 ++++
25 drivers/xen/events.c | 5 +++--
26 include/xen/events.h | 3 +++
27 3 files changed, 10 insertions(+), 2 deletions(-)
28
29diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
30index d99346e..4c262f6 100644
31--- a/arch/x86/pci/xen.c
32+++ b/arch/x86/pci/xen.c
33@@ -64,6 +64,10 @@ static int xen_register_pirq(u32 gsi, int gsi_override, int triggering,
34 int shareable = 0;
35 char *name;
36
37+ irq = xen_irq_from_gsi(gsi);
38+ if (irq > 0)
39+ return irq;
40+
41 if (set_pirq)
42 pirq = gsi;
43
44diff --git a/drivers/xen/events.c b/drivers/xen/events.c
45index 6e075cd..fec1204 100644
46--- a/drivers/xen/events.c
47+++ b/drivers/xen/events.c
48@@ -600,7 +600,7 @@ static void disable_pirq(struct irq_data *data)
49 disable_dynirq(data);
50 }
51
52-static int find_irq_by_gsi(unsigned gsi)
53+int xen_irq_from_gsi(unsigned gsi)
54 {
55 struct irq_info *info;
56
57@@ -614,6 +614,7 @@ static int find_irq_by_gsi(unsigned gsi)
58
59 return -1;
60 }
61+EXPORT_SYMBOL_GPL(xen_irq_from_gsi);
62
63 /*
64 * Do not make any assumptions regarding the relationship between the
65@@ -633,7 +634,7 @@ int xen_bind_pirq_gsi_to_irq(unsigned gsi,
66
67 mutex_lock(&irq_mapping_update_lock);
68
69- irq = find_irq_by_gsi(gsi);
70+ irq = xen_irq_from_gsi(gsi);
71 if (irq != -1) {
72 printk(KERN_INFO "xen_map_pirq_gsi: returning irq %d for gsi %u\n",
73 irq, gsi);
74diff --git a/include/xen/events.h b/include/xen/events.h
75index d287997..8f3d622 100644
76--- a/include/xen/events.h
77+++ b/include/xen/events.h
78@@ -96,6 +96,9 @@ int xen_irq_from_pirq(unsigned pirq);
79 /* Return the pirq allocated to the irq. */
80 int xen_pirq_from_irq(unsigned irq);
81
82+/* Return the irq allocated to the gsi */
83+int xen_irq_from_gsi(unsigned gsi);
84+
85 /* Determine whether to ignore this IRQ if it is passed to a guest. */
86 int xen_test_irq_shared(int irq);
87
88--
891.7.9.5
90
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch
new file mode 100644
index 00000000..7698a84a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch
@@ -0,0 +1,32 @@
1From 49228e195ea0ed24fe598a16c8721ee019df508d Mon Sep 17 00:00:00 2001
2From: Dave Airlie <airlied@redhat.com>
3Date: Fri, 18 May 2012 15:31:12 +0100
4Subject: [PATCH 097/117] nouveau: nouveau_set_bo_placement takes TTM flags
5
6commit c284815debba2f14ee2fd07b1b4cc972ab116110 upstream.
7
8This seems to be wrong to me, spotted while thinking about dma-buf.
9
10Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
11Signed-off-by: Dave Airlie <airlied@redhat.com>
12Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
13---
14 drivers/gpu/drm/nouveau/nouveau_bo.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
18index 7cc37e6..d5af089 100644
19--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
20+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
21@@ -1024,7 +1024,7 @@ nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
22
23 nvbo->placement.fpfn = 0;
24 nvbo->placement.lpfn = dev_priv->fb_mappable_pages;
25- nouveau_bo_placement_set(nvbo, TTM_PL_VRAM, 0);
26+ nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_VRAM, 0);
27 return nouveau_bo_validate(nvbo, false, true, false);
28 }
29
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch
new file mode 100644
index 00000000..4d21affd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch
@@ -0,0 +1,43 @@
1From 7a3402ddb979d26b777cc6f99824881af9362e8d Mon Sep 17 00:00:00 2001
2From: Andi Kleen <andi@firstfloor.org>
3Date: Fri, 19 Nov 2010 13:16:22 +0100
4Subject: [PATCH 098/117] MCE: Fix vm86 handling for 32bit mce handler
5
6commit a129a7c84582629741e5fa6f40026efcd7a65bd4 upstream.
7
8When running on 32bit the mce handler could misinterpret
9vm86 mode as ring 0. This can affect whether it does recovery
10or not; it was possible to panic when recovery was actually
11possible.
12
13Fix this by always forcing vm86 to look like ring 3.
14
15Signed-off-by: Andi Kleen <ak@linux.intel.com>
16Signed-off-by: Tony Luck <tony.luck@intel.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 arch/x86/kernel/cpu/mcheck/mce.c | 8 ++++++++
20 1 file changed, 8 insertions(+)
21
22diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
23index 2af127d..b0f1271 100644
24--- a/arch/x86/kernel/cpu/mcheck/mce.c
25+++ b/arch/x86/kernel/cpu/mcheck/mce.c
26@@ -389,6 +389,14 @@ static inline void mce_gather_info(struct mce *m, struct pt_regs *regs)
27 if (m->mcgstatus & (MCG_STATUS_RIPV|MCG_STATUS_EIPV)) {
28 m->ip = regs->ip;
29 m->cs = regs->cs;
30+
31+ /*
32+ * When in VM86 mode make the cs look like ring 3
33+ * always. This is a lie, but it's better than passing
34+ * the additional vm86 bit around everywhere.
35+ */
36+ if (v8086_mode(regs))
37+ m->cs |= 3;
38 }
39 /* Use accurate RIP reporting if available. */
40 if (rip_msr)
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch
new file mode 100644
index 00000000..05cd8cf0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch
@@ -0,0 +1,53 @@
1From 7938ffb57366a0e5f4b878955148f515d9940453 Mon Sep 17 00:00:00 2001
2From: Tony Luck <tony.luck@intel.com>
3Date: Wed, 23 May 2012 14:14:22 -0700
4Subject: [PATCH 099/117] x86/mce: Fix check for processor context when
5 machine check was taken.
6
7commit 875e26648cf9b6db9d8dc07b7959d7c61fb3f49c upstream.
8
9Linus pointed out that there was no value is checking whether m->ip
10was zero - because zero is a legimate value. If we have a reliable
11(or faked in the VM86 case) "m->cs" we can use it to tell whether we
12were in user mode or kernelwhen the machine check hit.
13
14Reported-by: Linus Torvalds <torvalds@linuxfoundation.org>
15Signed-off-by: Tony Luck <tony.luck@intel.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/x86/kernel/cpu/mcheck/mce-severity.c | 16 ++++++++++------
19 1 file changed, 10 insertions(+), 6 deletions(-)
20
21diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c
22index 7395d5f..c9c9cfe 100644
23--- a/arch/x86/kernel/cpu/mcheck/mce-severity.c
24+++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c
25@@ -145,15 +145,19 @@ static struct severity {
26 };
27
28 /*
29- * If the EIPV bit is set, it means the saved IP is the
30- * instruction which caused the MCE.
31+ * If mcgstatus indicated that ip/cs on the stack were
32+ * no good, then "m->cs" will be zero and we will have
33+ * to assume the worst case (IN_KERNEL) as we actually
34+ * have no idea what we were executing when the machine
35+ * check hit.
36+ * If we do have a good "m->cs" (or a faked one in the
37+ * case we were executing in VM86 mode) we can use it to
38+ * distinguish an exception taken in user from from one
39+ * taken in the kernel.
40 */
41 static int error_context(struct mce *m)
42 {
43- if (m->mcgstatus & MCG_STATUS_EIPV)
44- return (m->ip && (m->cs & 3) == 3) ? IN_USER : IN_KERNEL;
45- /* Unknown, assume kernel */
46- return IN_KERNEL;
47+ return ((m->cs & 3) == 3) ? IN_USER : IN_KERNEL;
48 }
49
50 int mce_severity(struct mce *m, int tolerant, char **msg)
51--
521.7.9.5
53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch
new file mode 100644
index 00000000..26aba7e7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch
@@ -0,0 +1,50 @@
1From 91587d2e157874620dcdb8378b2512b809605c26 Mon Sep 17 00:00:00 2001
2From: Chris Metcalf <cmetcalf@tilera.com>
3Date: Fri, 25 May 2012 12:32:09 -0400
4Subject: [PATCH 100/117] tile: fix bug where fls(0) was not returning 0
5
6commit 9f1d62bed7f015d11b9164078b7fea433b474114 upstream.
7
8This is because __builtin_clz(0) returns 64 for the "undefined" case
9of 0, since the builtin just does a right-shift 32 and "clz" instruction.
10So, use the alpha approach of casting to u32 and using __builtin_clzll().
11
12Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 arch/tile/include/asm/bitops.h | 12 ++++++------
16 1 file changed, 6 insertions(+), 6 deletions(-)
17
18diff --git a/arch/tile/include/asm/bitops.h b/arch/tile/include/asm/bitops.h
19index 16f1fa5..bd186c4 100644
20--- a/arch/tile/include/asm/bitops.h
21+++ b/arch/tile/include/asm/bitops.h
22@@ -77,6 +77,11 @@ static inline int ffs(int x)
23 return __builtin_ffs(x);
24 }
25
26+static inline int fls64(__u64 w)
27+{
28+ return (sizeof(__u64) * 8) - __builtin_clzll(w);
29+}
30+
31 /**
32 * fls - find last set bit in word
33 * @x: the word to search
34@@ -90,12 +95,7 @@ static inline int ffs(int x)
35 */
36 static inline int fls(int x)
37 {
38- return (sizeof(int) * 8) - __builtin_clz(x);
39-}
40-
41-static inline int fls64(__u64 w)
42-{
43- return (sizeof(__u64) * 8) - __builtin_clzll(w);
44+ return fls64((unsigned int) x);
45 }
46
47 static inline unsigned int __arch_hweight32(unsigned int w)
48--
491.7.9.5
50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch
new file mode 100644
index 00000000..8ab6c6e6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch
@@ -0,0 +1,63 @@
1From 7049f47a9ae3e01f50957ed9349d850579905544 Mon Sep 17 00:00:00 2001
2From: David Woodhouse <dwmw2@infradead.org>
3Date: Fri, 25 May 2012 17:42:54 +0100
4Subject: [PATCH 101/117] intel-iommu: Add device info into list before doing
5 context mapping
6
7commit e2ad23d04c1304431ab5176c89b7b476ded2d995 upstream.
8
9Add device info into list before doing context mapping, because device
10info will be used by iommu_enable_dev_iotlb(). Without it, ATS won't get
11enabled as it should be.
12
13ATS, while a dubious decision from a security point of view, can be very
14important for performance.
15
16Signed-off-by: Xudong Hao <xudong.hao@intel.com>
17Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com>
18Acked-by: Chris Wright <chrisw@sous-sol.org>
19Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
20Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/iommu/intel-iommu.c | 17 +++++++++++------
24 1 file changed, 11 insertions(+), 6 deletions(-)
25
26diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
27index bdc447f..ccf347f 100644
28--- a/drivers/iommu/intel-iommu.c
29+++ b/drivers/iommu/intel-iommu.c
30@@ -2267,12 +2267,6 @@ static int domain_add_dev_info(struct dmar_domain *domain,
31 if (!info)
32 return -ENOMEM;
33
34- ret = domain_context_mapping(domain, pdev, translation);
35- if (ret) {
36- free_devinfo_mem(info);
37- return ret;
38- }
39-
40 info->segment = pci_domain_nr(pdev->bus);
41 info->bus = pdev->bus->number;
42 info->devfn = pdev->devfn;
43@@ -2285,6 +2279,17 @@ static int domain_add_dev_info(struct dmar_domain *domain,
44 pdev->dev.archdata.iommu = info;
45 spin_unlock_irqrestore(&device_domain_lock, flags);
46
47+ ret = domain_context_mapping(domain, pdev, translation);
48+ if (ret) {
49+ spin_lock_irqsave(&device_domain_lock, flags);
50+ list_del(&info->link);
51+ list_del(&info->global);
52+ pdev->dev.archdata.iommu = NULL;
53+ spin_unlock_irqrestore(&device_domain_lock, flags);
54+ free_devinfo_mem(info);
55+ return ret;
56+ }
57+
58 return 0;
59 }
60
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch
new file mode 100644
index 00000000..0a655d25
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch
@@ -0,0 +1,55 @@
1From 79bd1de9faf5778df943c48022550d78a85d18d5 Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <bhutchings@solarflare.com>
3Date: Wed, 1 Feb 2012 09:32:25 +0000
4Subject: [PATCH 102/117] ethtool: Null-terminate filename passed to
5 ethtool_ops::flash_device
6
7commit 786f528119722f564a22ad953411374e06116333 upstream.
8
9The parameters for ETHTOOL_FLASHDEV include a filename, which ought to
10be null-terminated. Currently the only driver that implements
11ethtool_ops::flash_device attempts to add a null terminator if
12necessary, but does it wrongly. Do it in the ethtool core instead.
13
14Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/net/ethernet/emulex/benet/be_ethtool.c | 6 +-----
19 net/core/ethtool.c | 2 ++
20 2 files changed, 3 insertions(+), 5 deletions(-)
21
22diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
23index bf8153e..7570c1a 100644
24--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
25+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
26@@ -649,12 +649,8 @@ static int
27 be_do_flash(struct net_device *netdev, struct ethtool_flash *efl)
28 {
29 struct be_adapter *adapter = netdev_priv(netdev);
30- char file_name[ETHTOOL_FLASH_MAX_FILENAME];
31
32- file_name[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0;
33- strcpy(file_name, efl->data);
34-
35- return be_load_fw(adapter, file_name);
36+ return be_load_fw(adapter, efl->data);
37 }
38
39 static int
40diff --git a/net/core/ethtool.c b/net/core/ethtool.c
41index f444817..2b587ec 100644
42--- a/net/core/ethtool.c
43+++ b/net/core/ethtool.c
44@@ -1549,6 +1549,8 @@ static noinline_for_stack int ethtool_flash_device(struct net_device *dev,
45 if (!dev->ethtool_ops->flash_device)
46 return -EOPNOTSUPP;
47
48+ efl.data[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0;
49+
50 return dev->ethtool_ops->flash_device(dev, &efl);
51 }
52
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch
new file mode 100644
index 00000000..143e7526
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch
@@ -0,0 +1,157 @@
1From 27066ac72b55b4402110f19a0897cc67d2b514d3 Mon Sep 17 00:00:00 2001
2From: Jeff Moyer <jmoyer@redhat.com>
3Date: Fri, 11 May 2012 16:34:10 +0200
4Subject: [PATCH 103/117] block: don't mark buffers beyond end of disk as
5 mapped
6
7commit 080399aaaf3531f5b8761ec0ac30ff98891e8686 upstream.
8
9Hi,
10
11We have a bug report open where a squashfs image mounted on ppc64 would
12exhibit errors due to trying to read beyond the end of the disk. It can
13easily be reproduced by doing the following:
14
15[root@ibm-p750e-02-lp3 ~]# ls -l install.img
16-rw-r--r-- 1 root root 142032896 Apr 30 16:46 install.img
17[root@ibm-p750e-02-lp3 ~]# mount -o loop ./install.img /mnt/test
18[root@ibm-p750e-02-lp3 ~]# dd if=/dev/loop0 of=/dev/null
19dd: reading `/dev/loop0': Input/output error
20277376+0 records in
21277376+0 records out
22142016512 bytes (142 MB) copied, 0.9465 s, 150 MB/s
23
24In dmesg, you'll find the following:
25
26squashfs: version 4.0 (2009/01/31) Phillip Lougher
27[ 43.106012] attempt to access beyond end of device
28[ 43.106029] loop0: rw=0, want=277410, limit=277408
29[ 43.106039] Buffer I/O error on device loop0, logical block 138704
30[ 43.106053] attempt to access beyond end of device
31[ 43.106057] loop0: rw=0, want=277412, limit=277408
32[ 43.106061] Buffer I/O error on device loop0, logical block 138705
33[ 43.106066] attempt to access beyond end of device
34[ 43.106070] loop0: rw=0, want=277414, limit=277408
35[ 43.106073] Buffer I/O error on device loop0, logical block 138706
36[ 43.106078] attempt to access beyond end of device
37[ 43.106081] loop0: rw=0, want=277416, limit=277408
38[ 43.106085] Buffer I/O error on device loop0, logical block 138707
39[ 43.106089] attempt to access beyond end of device
40[ 43.106093] loop0: rw=0, want=277418, limit=277408
41[ 43.106096] Buffer I/O error on device loop0, logical block 138708
42[ 43.106101] attempt to access beyond end of device
43[ 43.106104] loop0: rw=0, want=277420, limit=277408
44[ 43.106108] Buffer I/O error on device loop0, logical block 138709
45[ 43.106112] attempt to access beyond end of device
46[ 43.106116] loop0: rw=0, want=277422, limit=277408
47[ 43.106120] Buffer I/O error on device loop0, logical block 138710
48[ 43.106124] attempt to access beyond end of device
49[ 43.106128] loop0: rw=0, want=277424, limit=277408
50[ 43.106131] Buffer I/O error on device loop0, logical block 138711
51[ 43.106135] attempt to access beyond end of device
52[ 43.106139] loop0: rw=0, want=277426, limit=277408
53[ 43.106143] Buffer I/O error on device loop0, logical block 138712
54[ 43.106147] attempt to access beyond end of device
55[ 43.106151] loop0: rw=0, want=277428, limit=277408
56[ 43.106154] Buffer I/O error on device loop0, logical block 138713
57[ 43.106158] attempt to access beyond end of device
58[ 43.106162] loop0: rw=0, want=277430, limit=277408
59[ 43.106166] attempt to access beyond end of device
60[ 43.106169] loop0: rw=0, want=277432, limit=277408
61...
62[ 43.106307] attempt to access beyond end of device
63[ 43.106311] loop0: rw=0, want=277470, limit=2774
64
65Squashfs manages to read in the end block(s) of the disk during the
66mount operation. Then, when dd reads the block device, it leads to
67block_read_full_page being called with buffers that are beyond end of
68disk, but are marked as mapped. Thus, it would end up submitting read
69I/O against them, resulting in the errors mentioned above. I fixed the
70problem by modifying init_page_buffers to only set the buffer mapped if
71it fell inside of i_size.
72
73Cheers,
74Jeff
75
76Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
77Acked-by: Nick Piggin <npiggin@kernel.dk>
78
79--
80
81Changes from v1->v2: re-used max_block, as suggested by Nick Piggin.
82Signed-off-by: Jens Axboe <axboe@kernel.dk>
83Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
84---
85 fs/block_dev.c | 6 +++---
86 fs/buffer.c | 4 +++-
87 include/linux/fs.h | 1 +
88 3 files changed, 7 insertions(+), 4 deletions(-)
89
90diff --git a/fs/block_dev.c b/fs/block_dev.c
91index abe9b48..9b98987 100644
92--- a/fs/block_dev.c
93+++ b/fs/block_dev.c
94@@ -68,7 +68,7 @@ static void bdev_inode_switch_bdi(struct inode *inode,
95 spin_unlock(&dst->wb.list_lock);
96 }
97
98-static sector_t max_block(struct block_device *bdev)
99+sector_t blkdev_max_block(struct block_device *bdev)
100 {
101 sector_t retval = ~((sector_t)0);
102 loff_t sz = i_size_read(bdev->bd_inode);
103@@ -139,7 +139,7 @@ static int
104 blkdev_get_block(struct inode *inode, sector_t iblock,
105 struct buffer_head *bh, int create)
106 {
107- if (iblock >= max_block(I_BDEV(inode))) {
108+ if (iblock >= blkdev_max_block(I_BDEV(inode))) {
109 if (create)
110 return -EIO;
111
112@@ -161,7 +161,7 @@ static int
113 blkdev_get_blocks(struct inode *inode, sector_t iblock,
114 struct buffer_head *bh, int create)
115 {
116- sector_t end_block = max_block(I_BDEV(inode));
117+ sector_t end_block = blkdev_max_block(I_BDEV(inode));
118 unsigned long max_blocks = bh->b_size >> inode->i_blkbits;
119
120 if ((iblock + max_blocks) > end_block) {
121diff --git a/fs/buffer.c b/fs/buffer.c
122index 19d8eb7..c807931 100644
123--- a/fs/buffer.c
124+++ b/fs/buffer.c
125@@ -971,6 +971,7 @@ init_page_buffers(struct page *page, struct block_device *bdev,
126 struct buffer_head *head = page_buffers(page);
127 struct buffer_head *bh = head;
128 int uptodate = PageUptodate(page);
129+ sector_t end_block = blkdev_max_block(I_BDEV(bdev->bd_inode));
130
131 do {
132 if (!buffer_mapped(bh)) {
133@@ -979,7 +980,8 @@ init_page_buffers(struct page *page, struct block_device *bdev,
134 bh->b_blocknr = block;
135 if (uptodate)
136 set_buffer_uptodate(bh);
137- set_buffer_mapped(bh);
138+ if (block < end_block)
139+ set_buffer_mapped(bh);
140 }
141 block++;
142 bh = bh->b_this_page;
143diff --git a/include/linux/fs.h b/include/linux/fs.h
144index 11f1951..43d36b7 100644
145--- a/include/linux/fs.h
146+++ b/include/linux/fs.h
147@@ -2094,6 +2094,7 @@ extern void unregister_blkdev(unsigned int, const char *);
148 extern struct block_device *bdget(dev_t);
149 extern struct block_device *bdgrab(struct block_device *bdev);
150 extern void bd_set_size(struct block_device *, loff_t size);
151+extern sector_t blkdev_max_block(struct block_device *bdev);
152 extern void bd_forget(struct inode *inode);
153 extern void bdput(struct block_device *);
154 extern void invalidate_bdev(struct block_device *);
155--
1561.7.9.5
157
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch
new file mode 100644
index 00000000..13627659
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch
@@ -0,0 +1,63 @@
1From 39c43ea9fecaddcfddd03787b920b8accdb87884 Mon Sep 17 00:00:00 2001
2From: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
3Date: Thu, 17 May 2012 17:03:24 -0700
4Subject: [PATCH 104/117] drivers/rtc/rtc-pl031.c: configure correct wday for
5 2000-01-01
6
7commit c0a5f4a05af588a0f9951f8d24e2564b09501918 upstream.
8
9The reset date of the ST Micro version of PL031 is 2000-01-01. The
10correct weekday for 2000-01-01 is saturday, but pl031 is initialized to
11sunday. This may lead to alarm malfunction, so configure the correct
12wday if RTC_DR indicates reset.
13
14Signed-off-by: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
15Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
16Cc: Mattias Wallin <mattias.wallin@stericsson.com>
17Cc: Alessandro Zummo <a.zummo@towertech.it>
18Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
19Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/rtc/rtc-pl031.c | 18 ++++++++++++++++++
23 1 file changed, 18 insertions(+)
24
25diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
26index e86edfc..1e80a48 100644
27--- a/drivers/rtc/rtc-pl031.c
28+++ b/drivers/rtc/rtc-pl031.c
29@@ -312,6 +312,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
30 int ret;
31 struct pl031_local *ldata;
32 struct rtc_class_ops *ops = id->data;
33+ unsigned long time;
34
35 ret = amba_request_regions(adev, NULL);
36 if (ret)
37@@ -343,6 +344,23 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
38 writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
39 ldata->base + RTC_CR);
40
41+ /*
42+ * On ST PL031 variants, the RTC reset value does not provide correct
43+ * weekday for 2000-01-01. Correct the erroneous sunday to saturday.
44+ */
45+ if (ldata->hw_designer == AMBA_VENDOR_ST) {
46+ if (readl(ldata->base + RTC_YDR) == 0x2000) {
47+ time = readl(ldata->base + RTC_DR);
48+ if ((time &
49+ (RTC_MON_MASK | RTC_MDAY_MASK | RTC_WDAY_MASK))
50+ == 0x02120000) {
51+ time = time | (0x7 << RTC_WDAY_SHIFT);
52+ writel(0x2000, ldata->base + RTC_YLR);
53+ writel(time, ldata->base + RTC_LR);
54+ }
55+ }
56+ }
57+
58 ldata->rtc = rtc_device_register("pl031", &adev->dev, ops,
59 THIS_MODULE);
60 if (IS_ERR(ldata->rtc)) {
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch
new file mode 100644
index 00000000..67b25e2a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch
@@ -0,0 +1,136 @@
1From 91ccd8364ff45f06a05715225583247c09be4bbc Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Mon, 19 Mar 2012 15:44:31 -0500
4Subject: [PATCH 105/117] rtlwifi: Preallocate USB read buffers and eliminate
5 kalloc in read routine
6
7commit a7959c1394d4126a70a53b914ce4105f5173d0aa upstream.
8
9The current version of rtlwifi for USB operations uses kmalloc to
10acquire a 32-bit buffer for each read of the device. When
11_usb_read_sync() is called with the rcu_lock held, the result is
12a "sleeping function called from invalid context" BUG. This is
13reported for two cases in https://bugzilla.kernel.org/show_bug.cgi?id=42775.
14The first case has the lock originating from within rtlwifi and could
15be fixed by rearranging the locking; however, the second originates from
16within mac80211. The kmalloc() call is removed from _usb_read_sync()
17by creating a ring buffer pointer in the private area and
18allocating the buffer data in the probe routine.
19
20Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
21Signed-off-by: John W. Linville <linville@tuxdriver.com>
22[This version will apply to 3.2 and earlier. - Larry]
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 drivers/net/wireless/rtlwifi/usb.c | 34 ++++++++++++++++------------------
26 drivers/net/wireless/rtlwifi/wifi.h | 6 +++++-
27 2 files changed, 21 insertions(+), 19 deletions(-)
28
29diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
30index 2b7bcc8..db34db6 100644
31--- a/drivers/net/wireless/rtlwifi/usb.c
32+++ b/drivers/net/wireless/rtlwifi/usb.c
33@@ -113,46 +113,38 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
34 return status;
35 }
36
37-static u32 _usb_read_sync(struct usb_device *udev, u32 addr, u16 len)
38+static u32 _usb_read_sync(struct rtl_priv *rtlpriv, u32 addr, u16 len)
39 {
40+ struct device *dev = rtlpriv->io.dev;
41+ struct usb_device *udev = to_usb_device(dev);
42 u8 request;
43 u16 wvalue;
44 u16 index;
45- u32 *data;
46- u32 ret;
47+ __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index];
48
49- data = kmalloc(sizeof(u32), GFP_KERNEL);
50- if (!data)
51- return -ENOMEM;
52 request = REALTEK_USB_VENQT_CMD_REQ;
53 index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */
54
55 wvalue = (u16)addr;
56 _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len);
57- ret = *data;
58- kfree(data);
59- return ret;
60+ if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT)
61+ rtlpriv->usb_data_index = 0;
62+ return le32_to_cpu(*data);
63 }
64
65 static u8 _usb_read8_sync(struct rtl_priv *rtlpriv, u32 addr)
66 {
67- struct device *dev = rtlpriv->io.dev;
68-
69- return (u8)_usb_read_sync(to_usb_device(dev), addr, 1);
70+ return (u8)_usb_read_sync(rtlpriv, addr, 1);
71 }
72
73 static u16 _usb_read16_sync(struct rtl_priv *rtlpriv, u32 addr)
74 {
75- struct device *dev = rtlpriv->io.dev;
76-
77- return (u16)_usb_read_sync(to_usb_device(dev), addr, 2);
78+ return (u16)_usb_read_sync(rtlpriv, addr, 2);
79 }
80
81 static u32 _usb_read32_sync(struct rtl_priv *rtlpriv, u32 addr)
82 {
83- struct device *dev = rtlpriv->io.dev;
84-
85- return _usb_read_sync(to_usb_device(dev), addr, 4);
86+ return _usb_read_sync(rtlpriv, addr, 4);
87 }
88
89 static void _usb_write_async(struct usb_device *udev, u32 addr, u32 val,
90@@ -913,6 +905,11 @@ int __devinit rtl_usb_probe(struct usb_interface *intf,
91 return -ENOMEM;
92 }
93 rtlpriv = hw->priv;
94+ rtlpriv->usb_data = kzalloc(RTL_USB_MAX_RX_COUNT * sizeof(u32),
95+ GFP_KERNEL);
96+ if (!rtlpriv->usb_data)
97+ return -ENOMEM;
98+ rtlpriv->usb_data_index = 0;
99 SET_IEEE80211_DEV(hw, &intf->dev);
100 udev = interface_to_usbdev(intf);
101 usb_get_dev(udev);
102@@ -990,6 +987,7 @@ void rtl_usb_disconnect(struct usb_interface *intf)
103 /* rtl_deinit_rfkill(hw); */
104 rtl_usb_deinit(hw);
105 rtl_deinit_core(hw);
106+ kfree(rtlpriv->usb_data);
107 rtlpriv->cfg->ops->deinit_sw_leds(hw);
108 rtlpriv->cfg->ops->deinit_sw_vars(hw);
109 _rtl_usb_io_handler_release(hw);
110diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
111index 713c7dd..b1e9deb 100644
112--- a/drivers/net/wireless/rtlwifi/wifi.h
113+++ b/drivers/net/wireless/rtlwifi/wifi.h
114@@ -63,7 +63,7 @@
115 #define AC_MAX 4
116 #define QOS_QUEUE_NUM 4
117 #define RTL_MAC80211_NUM_QUEUE 5
118-
119+#define RTL_USB_MAX_RX_COUNT 100
120 #define QBSS_LOAD_SIZE 5
121 #define MAX_WMMELE_LENGTH 64
122
123@@ -1621,6 +1621,10 @@ struct rtl_priv {
124 interface or hardware */
125 unsigned long status;
126
127+ /* data buffer pointer for USB reads */
128+ __le32 *usb_data;
129+ int usb_data_index;
130+
131 /*This must be the last item so
132 that it points to the data allocated
133 beyond this structure like:
134--
1351.7.9.5
136
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch
new file mode 100644
index 00000000..678add01
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch
@@ -0,0 +1,39 @@
1From 697781d208d92b5998815e584411f29c34048cd6 Mon Sep 17 00:00:00 2001
2From: Peng Tao <bergwolf@gmail.com>
3Date: Tue, 10 Jan 2012 22:42:47 +0800
4Subject: [PATCH 106/117] NFS4: fix compile warnings in nfs4proc.c
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit de040beccd52bb5fcac90031505384d037b1111c upstream.
10
11compile in nfs-for-3.3 branch shows following warnings. Fix it here.
12
13fs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’:
14fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘size_t’
15fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘size_t’
16
17Signed-off-by: Peng Tao <peng_tao@emc.com>
18Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 fs/nfs/nfs4proc.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
25index bab7c58..065f82e 100644
26--- a/fs/nfs/nfs4proc.c
27+++ b/fs/nfs/nfs4proc.c
28@@ -3601,7 +3601,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
29 res.acl_flags |= NFS4_ACL_LEN_REQUEST;
30 resp_buf = page_address(pages[0]);
31
32- dprintk("%s buf %p buflen %ld npages %d args.acl_len %ld\n",
33+ dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n",
34 __func__, buf, buflen, npages, args.acl_len);
35 ret = nfs4_call_sync(NFS_SERVER(inode)->client, NFS_SERVER(inode),
36 &msg, &args.seq_args, &res.seq_res, 0);
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch
new file mode 100644
index 00000000..6859029c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch
@@ -0,0 +1,123 @@
1From c47d1a5a922ddebee44945d665affd7214f2dbf3 Mon Sep 17 00:00:00 2001
2From: Sachin Prabhu <sprabhu@redhat.com>
3Date: Tue, 17 Apr 2012 14:35:39 +0100
4Subject: [PATCH 107/117] Avoid reading past buffer when calling GETACL
5
6commit 5a00689930ab975fdd1b37b034475017e460cf2a upstream.
7
8Bug noticed in commit
9bf118a342f10dafe44b14451a1392c3254629a1f
10
11When calling GETACL, if the size of the bitmap array, the length
12attribute and the acl returned by the server is greater than the
13allocated buffer(args.acl_len), we can Oops with a General Protection
14fault at _copy_from_pages() when we attempt to read past the pages
15allocated.
16
17This patch allocates an extra PAGE for the bitmap and checks to see that
18the bitmap + attribute_length + ACLs don't exceed the buffer space
19allocated to it.
20
21Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
22Reported-by: Jian Li <jiali@redhat.com>
23[Trond: Fixed a size_t vs unsigned int printk() warning]
24Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 fs/nfs/nfs4proc.c | 16 ++++++++++------
28 fs/nfs/nfs4xdr.c | 18 +++++++++++-------
29 2 files changed, 21 insertions(+), 13 deletions(-)
30
31diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
32index 065f82e..39e5341 100644
33--- a/fs/nfs/nfs4proc.c
34+++ b/fs/nfs/nfs4proc.c
35@@ -3582,19 +3582,23 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
36 if (npages == 0)
37 npages = 1;
38
39+ /* Add an extra page to handle the bitmap returned */
40+ npages++;
41+
42 for (i = 0; i < npages; i++) {
43 pages[i] = alloc_page(GFP_KERNEL);
44 if (!pages[i])
45 goto out_free;
46 }
47- if (npages > 1) {
48- /* for decoding across pages */
49- res.acl_scratch = alloc_page(GFP_KERNEL);
50- if (!res.acl_scratch)
51- goto out_free;
52- }
53+
54+ /* for decoding across pages */
55+ res.acl_scratch = alloc_page(GFP_KERNEL);
56+ if (!res.acl_scratch)
57+ goto out_free;
58+
59 args.acl_len = npages * PAGE_SIZE;
60 args.acl_pgbase = 0;
61+
62 /* Let decode_getfacl know not to fail if the ACL data is larger than
63 * the page we send as a guess */
64 if (buf == NULL)
65diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
66index 68adab4..d7e6f7b 100644
67--- a/fs/nfs/nfs4xdr.c
68+++ b/fs/nfs/nfs4xdr.c
69@@ -4965,11 +4965,19 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
70 bitmap[3] = {0};
71 struct kvec *iov = req->rq_rcv_buf.head;
72 int status;
73+ size_t page_len = xdr->buf->page_len;
74
75 res->acl_len = 0;
76 if ((status = decode_op_hdr(xdr, OP_GETATTR)) != 0)
77 goto out;
78+
79 bm_p = xdr->p;
80+ res->acl_data_offset = be32_to_cpup(bm_p) + 2;
81+ res->acl_data_offset <<= 2;
82+ /* Check if the acl data starts beyond the allocated buffer */
83+ if (res->acl_data_offset > page_len)
84+ return -ERANGE;
85+
86 if ((status = decode_attr_bitmap(xdr, bitmap)) != 0)
87 goto out;
88 if ((status = decode_attr_length(xdr, &attrlen, &savep)) != 0)
89@@ -4979,28 +4987,24 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
90 return -EIO;
91 if (likely(bitmap[0] & FATTR4_WORD0_ACL)) {
92 size_t hdrlen;
93- u32 recvd;
94
95 /* The bitmap (xdr len + bitmaps) and the attr xdr len words
96 * are stored with the acl data to handle the problem of
97 * variable length bitmaps.*/
98 xdr->p = bm_p;
99- res->acl_data_offset = be32_to_cpup(bm_p) + 2;
100- res->acl_data_offset <<= 2;
101
102 /* We ignore &savep and don't do consistency checks on
103 * the attr length. Let userspace figure it out.... */
104 hdrlen = (u8 *)xdr->p - (u8 *)iov->iov_base;
105 attrlen += res->acl_data_offset;
106- recvd = req->rq_rcv_buf.len - hdrlen;
107- if (attrlen > recvd) {
108+ if (attrlen > page_len) {
109 if (res->acl_flags & NFS4_ACL_LEN_REQUEST) {
110 /* getxattr interface called with a NULL buf */
111 res->acl_len = attrlen;
112 goto out;
113 }
114- dprintk("NFS: acl reply: attrlen %u > recvd %u\n",
115- attrlen, recvd);
116+ dprintk("NFS: acl reply: attrlen %zu > page_len %u\n",
117+ attrlen, page_len);
118 return -EINVAL;
119 }
120 xdr_read_pages(xdr, attrlen);
121--
1221.7.9.5
123
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch
new file mode 100644
index 00000000..4334d5cb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch
@@ -0,0 +1,88 @@
1From 883e739eda3448cf83266a155d8ad39b1fe7ac6e Mon Sep 17 00:00:00 2001
2From: Sachin Prabhu <sprabhu@redhat.com>
3Date: Tue, 17 Apr 2012 14:36:40 +0100
4Subject: [PATCH 108/117] Avoid beyond bounds copy while caching ACL
5
6commit 5794d21ef4639f0e33440927bb903f9598c21e92 upstream.
7
8When attempting to cache ACLs returned from the server, if the bitmap
9size + the ACL size is greater than a PAGE_SIZE but the ACL size itself
10is smaller than a PAGE_SIZE, we can read past the buffer page boundary.
11
12Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
13Reported-by: Jian Li <jiali@redhat.com>
14Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 fs/nfs/nfs4proc.c | 12 +++++-------
18 fs/nfs/nfs4xdr.c | 2 +-
19 2 files changed, 6 insertions(+), 8 deletions(-)
20
21diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
22index 39e5341..03d9b90 100644
23--- a/fs/nfs/nfs4proc.c
24+++ b/fs/nfs/nfs4proc.c
25@@ -3526,16 +3526,16 @@ out:
26 return ret;
27 }
28
29-static void nfs4_write_cached_acl(struct inode *inode, const char *buf, size_t acl_len)
30+static void nfs4_write_cached_acl(struct inode *inode, struct page **pages, size_t pgbase, size_t acl_len)
31 {
32 struct nfs4_cached_acl *acl;
33
34- if (buf && acl_len <= PAGE_SIZE) {
35+ if (pages && acl_len <= PAGE_SIZE) {
36 acl = kmalloc(sizeof(*acl) + acl_len, GFP_KERNEL);
37 if (acl == NULL)
38 goto out;
39 acl->cached = 1;
40- memcpy(acl->data, buf, acl_len);
41+ _copy_from_pages(acl->data, pages, pgbase, acl_len);
42 } else {
43 acl = kmalloc(sizeof(*acl), GFP_KERNEL);
44 if (acl == NULL)
45@@ -3568,7 +3568,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
46 struct nfs_getaclres res = {
47 .acl_len = buflen,
48 };
49- void *resp_buf;
50 struct rpc_message msg = {
51 .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETACL],
52 .rpc_argp = &args,
53@@ -3603,7 +3602,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
54 * the page we send as a guess */
55 if (buf == NULL)
56 res.acl_flags |= NFS4_ACL_LEN_REQUEST;
57- resp_buf = page_address(pages[0]);
58
59 dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n",
60 __func__, buf, buflen, npages, args.acl_len);
61@@ -3614,9 +3612,9 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu
62
63 acl_len = res.acl_len - res.acl_data_offset;
64 if (acl_len > args.acl_len)
65- nfs4_write_cached_acl(inode, NULL, acl_len);
66+ nfs4_write_cached_acl(inode, NULL, 0, acl_len);
67 else
68- nfs4_write_cached_acl(inode, resp_buf + res.acl_data_offset,
69+ nfs4_write_cached_acl(inode, pages, res.acl_data_offset,
70 acl_len);
71 if (buf) {
72 ret = -ERANGE;
73diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
74index d7e6f7b..bdd5bdc 100644
75--- a/fs/nfs/nfs4xdr.c
76+++ b/fs/nfs/nfs4xdr.c
77@@ -5003,7 +5003,7 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
78 res->acl_len = attrlen;
79 goto out;
80 }
81- dprintk("NFS: acl reply: attrlen %zu > page_len %u\n",
82+ dprintk("NFS: acl reply: attrlen %u > page_len %zu\n",
83 attrlen, page_len);
84 return -EINVAL;
85 }
86--
871.7.9.5
88
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch
new file mode 100644
index 00000000..e6899f50
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch
@@ -0,0 +1,73 @@
1From 0f8821cf8d7d8c94c8d29d8d32c02d90363ffe9b Mon Sep 17 00:00:00 2001
2From: Laxman Dewangan <ldewangan@nvidia.com>
3Date: Mon, 7 May 2012 12:16:19 +0530
4Subject: [PATCH 109/117] i2c: tegra: notify transfer-complete after clearing
5 status.
6
7commit c889e91d2cc22123f20f40dde0c0a91856a20eea upstream.
8
9The notification of the transfer complete by calling complete()
10should be done after clearing all interrupt status.
11This avoids the race condition of misconfigure the i2c controller
12in multi-core environment.
13
14Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
15Acked-by: Stephen Warren <swarren@wwwdotorg.org>
16Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/i2c/busses/i2c-tegra.c | 13 ++++++-------
20 1 file changed, 6 insertions(+), 7 deletions(-)
21
22diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
23index 46b6500..3d7885a 100644
24--- a/drivers/i2c/busses/i2c-tegra.c
25+++ b/drivers/i2c/busses/i2c-tegra.c
26@@ -401,8 +401,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
27 disable_irq_nosync(i2c_dev->irq);
28 i2c_dev->irq_disabled = 1;
29 }
30-
31- complete(&i2c_dev->msg_complete);
32 goto err;
33 }
34
35@@ -411,7 +409,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
36 i2c_dev->msg_err |= I2C_ERR_NO_ACK;
37 if (status & I2C_INT_ARBITRATION_LOST)
38 i2c_dev->msg_err |= I2C_ERR_ARBITRATION_LOST;
39- complete(&i2c_dev->msg_complete);
40 goto err;
41 }
42
43@@ -429,14 +426,14 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
44 tegra_i2c_mask_irq(i2c_dev, I2C_INT_TX_FIFO_DATA_REQ);
45 }
46
47+ i2c_writel(i2c_dev, status, I2C_INT_STATUS);
48+ if (i2c_dev->is_dvc)
49+ dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
50+
51 if (status & I2C_INT_PACKET_XFER_COMPLETE) {
52 BUG_ON(i2c_dev->msg_buf_remaining);
53 complete(&i2c_dev->msg_complete);
54 }
55-
56- i2c_writel(i2c_dev, status, I2C_INT_STATUS);
57- if (i2c_dev->is_dvc)
58- dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
59 return IRQ_HANDLED;
60 err:
61 /* An error occurred, mask all interrupts */
62@@ -446,6 +443,8 @@ err:
63 i2c_writel(i2c_dev, status, I2C_INT_STATUS);
64 if (i2c_dev->is_dvc)
65 dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS);
66+
67+ complete(&i2c_dev->msg_complete);
68 return IRQ_HANDLED;
69 }
70
71--
721.7.9.5
73
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch
new file mode 100644
index 00000000..7b921ac1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch
@@ -0,0 +1,33 @@
1From 38de7136cb639352d20e39a90c41bb93f63a03e6 Mon Sep 17 00:00:00 2001
2From: Marcus Folkesson <marcus.folkesson@gmail.com>
3Date: Thu, 3 May 2012 15:56:36 +0200
4Subject: [PATCH 110/117] i2c: davinci: Free requested IRQ in remove
5
6commit 9868a060ccf769c08ec378a9829137e272e9a92c upstream.
7
8The freed IRQ is not necessary the one requested in probe.
9Even if it was, with two or more i2c-controllers it will fails anyway.
10
11Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
12Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/i2c/busses/i2c-davinci.c | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
19index a76d85f..79b4bcb 100644
20--- a/drivers/i2c/busses/i2c-davinci.c
21+++ b/drivers/i2c/busses/i2c-davinci.c
22@@ -755,7 +755,7 @@ static int davinci_i2c_remove(struct platform_device *pdev)
23 dev->clk = NULL;
24
25 davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0);
26- free_irq(IRQ_I2C, dev);
27+ free_irq(dev->irq, dev);
28 iounmap(dev->base);
29 kfree(dev);
30
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch
new file mode 100644
index 00000000..dfd13100
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch
@@ -0,0 +1,1651 @@
1From 873824542d50e967bda4a3526b4aceec80641c6d Mon Sep 17 00:00:00 2001
2From: "H. Peter Anvin" <hpa@linux.intel.com>
3Date: Tue, 8 May 2012 21:22:24 +0300
4Subject: [PATCH 111/117] x86, realmode: 16-bit real-mode code support for
5 relocs tool
6
7commit 6520fe5564acf07ade7b18a1272db1184835c487 upstream.
8
9A new option is added to the relocs tool called '--realmode'.
10This option causes the generation of 16-bit segment relocations
11and 32-bit linear relocations for the real-mode code. When
12the real-mode code is moved to the low-memory during kernel
13initialization, these relocation entries can be used to
14relocate the code properly.
15
16In the assembly code 16-bit segment relocations must be relative
17to the 'real_mode_seg' absolute symbol. Linear relocations must be
18relative to a symbol prefixed with 'pa_'.
19
2016-bit segment relocation is used to load cs:ip in 16-bit code.
21Linear relocations are used in the 32-bit code for relocatable
22data references. They are declared in the linker script of the
23real-mode code.
24
25The relocs tool is moved to arch/x86/tools/relocs.c, and added new
26target archscripts that can be used to build scripts needed building
27an architecture. be compiled before building the arch/x86 tree.
28
29[ hpa: accelerating this because it detects invalid absolute
30 relocations, a serious bug in binutils 2.22.52.0.x which currently
31 produces bad kernels. ]
32
33Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
34Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.com
35Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
36Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
37Cc: <stable@vger.kernel.org>
38[bwh: Backported to 3.2:
39 - Adjust context (no archheaders; no insn_sanity)
40 - Expand put_unaligned_le32()]
41Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
42---
43 Makefile | 9 +-
44 arch/x86/Makefile | 3 +
45 arch/x86/boot/compressed/Makefile | 9 +-
46 arch/x86/boot/compressed/relocs.c | 680 -------------------------------
47 arch/x86/tools/.gitignore | 1 +
48 arch/x86/tools/Makefile | 3 +
49 arch/x86/tools/relocs.c | 799 +++++++++++++++++++++++++++++++++++++
50 scripts/Makefile | 2 +
51 8 files changed, 818 insertions(+), 688 deletions(-)
52 delete mode 100644 arch/x86/boot/compressed/relocs.c
53 create mode 100644 arch/x86/tools/.gitignore
54 create mode 100644 arch/x86/tools/relocs.c
55
56diff --git a/Makefile b/Makefile
57index add68f1..0226da5 100644
58--- a/Makefile
59+++ b/Makefile
60@@ -442,7 +442,7 @@ asm-generic:
61
62 no-dot-config-targets := clean mrproper distclean \
63 cscope gtags TAGS tags help %docs check% coccicheck \
64- include/linux/version.h headers_% \
65+ include/linux/version.h headers_% archscripts \
66 kernelversion %src-pkg
67
68 config-targets := 0
69@@ -979,7 +979,7 @@ prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
70 include/config/auto.conf
71 $(cmd_crmodverdir)
72
73-archprepare: prepare1 scripts_basic
74+archprepare: archscripts prepare1 scripts_basic
75
76 prepare0: archprepare FORCE
77 $(Q)$(MAKE) $(build)=.
78@@ -1046,8 +1046,11 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
79 # If we do an all arch process set dst to asm-$(hdr-arch)
80 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
81
82+PHONY += archscripts
83+archscripts:
84+
85 PHONY += __headers
86-__headers: include/linux/version.h scripts_basic asm-generic FORCE
87+__headers: include/linux/version.h scripts_basic asm-generic archscripts FORCE
88 $(Q)$(MAKE) $(build)=scripts build_unifdef
89
90 PHONY += headers_install_all
91diff --git a/arch/x86/Makefile b/arch/x86/Makefile
92index b02e509..774fd16 100644
93--- a/arch/x86/Makefile
94+++ b/arch/x86/Makefile
95@@ -117,6 +117,9 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
96 KBUILD_CFLAGS += $(mflags-y)
97 KBUILD_AFLAGS += $(mflags-y)
98
99+archscripts:
100+ $(Q)$(MAKE) $(build)=arch/x86/tools relocs
101+
102 ###
103 # Kernel objects
104
105diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
106index 09664ef..77453c6 100644
107--- a/arch/x86/boot/compressed/Makefile
108+++ b/arch/x86/boot/compressed/Makefile
109@@ -31,13 +31,12 @@ OBJCOPYFLAGS_vmlinux.bin := -R .comment -S
110 $(obj)/vmlinux.bin: vmlinux FORCE
111 $(call if_changed,objcopy)
112
113+targets += vmlinux.bin.all vmlinux.relocs
114
115-targets += vmlinux.bin.all vmlinux.relocs relocs
116-hostprogs-$(CONFIG_X86_NEED_RELOCS) += relocs
117-
118+CMD_RELOCS = arch/x86/tools/relocs
119 quiet_cmd_relocs = RELOCS $@
120- cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $<
121-$(obj)/vmlinux.relocs: vmlinux $(obj)/relocs FORCE
122+ cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $<
123+$(obj)/vmlinux.relocs: vmlinux FORCE
124 $(call if_changed,relocs)
125
126 vmlinux.bin.all-y := $(obj)/vmlinux.bin
127diff --git a/arch/x86/boot/compressed/relocs.c b/arch/x86/boot/compressed/relocs.c
128deleted file mode 100644
129index e77f4e4..0000000
130--- a/arch/x86/boot/compressed/relocs.c
131+++ /dev/null
132@@ -1,680 +0,0 @@
133-#include <stdio.h>
134-#include <stdarg.h>
135-#include <stdlib.h>
136-#include <stdint.h>
137-#include <string.h>
138-#include <errno.h>
139-#include <unistd.h>
140-#include <elf.h>
141-#include <byteswap.h>
142-#define USE_BSD
143-#include <endian.h>
144-#include <regex.h>
145-
146-static void die(char *fmt, ...);
147-
148-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
149-static Elf32_Ehdr ehdr;
150-static unsigned long reloc_count, reloc_idx;
151-static unsigned long *relocs;
152-
153-struct section {
154- Elf32_Shdr shdr;
155- struct section *link;
156- Elf32_Sym *symtab;
157- Elf32_Rel *reltab;
158- char *strtab;
159-};
160-static struct section *secs;
161-
162-/*
163- * Following symbols have been audited. There values are constant and do
164- * not change if bzImage is loaded at a different physical address than
165- * the address for which it has been compiled. Don't warn user about
166- * absolute relocations present w.r.t these symbols.
167- */
168-static const char abs_sym_regex[] =
169- "^(xen_irq_disable_direct_reloc$|"
170- "xen_save_fl_direct_reloc$|"
171- "VDSO|"
172- "__crc_)";
173-static regex_t abs_sym_regex_c;
174-static int is_abs_reloc(const char *sym_name)
175-{
176- return !regexec(&abs_sym_regex_c, sym_name, 0, NULL, 0);
177-}
178-
179-/*
180- * These symbols are known to be relative, even if the linker marks them
181- * as absolute (typically defined outside any section in the linker script.)
182- */
183-static const char rel_sym_regex[] =
184- "^_end$";
185-static regex_t rel_sym_regex_c;
186-static int is_rel_reloc(const char *sym_name)
187-{
188- return !regexec(&rel_sym_regex_c, sym_name, 0, NULL, 0);
189-}
190-
191-static void regex_init(void)
192-{
193- char errbuf[128];
194- int err;
195-
196- err = regcomp(&abs_sym_regex_c, abs_sym_regex,
197- REG_EXTENDED|REG_NOSUB);
198- if (err) {
199- regerror(err, &abs_sym_regex_c, errbuf, sizeof errbuf);
200- die("%s", errbuf);
201- }
202-
203- err = regcomp(&rel_sym_regex_c, rel_sym_regex,
204- REG_EXTENDED|REG_NOSUB);
205- if (err) {
206- regerror(err, &rel_sym_regex_c, errbuf, sizeof errbuf);
207- die("%s", errbuf);
208- }
209-}
210-
211-static void die(char *fmt, ...)
212-{
213- va_list ap;
214- va_start(ap, fmt);
215- vfprintf(stderr, fmt, ap);
216- va_end(ap);
217- exit(1);
218-}
219-
220-static const char *sym_type(unsigned type)
221-{
222- static const char *type_name[] = {
223-#define SYM_TYPE(X) [X] = #X
224- SYM_TYPE(STT_NOTYPE),
225- SYM_TYPE(STT_OBJECT),
226- SYM_TYPE(STT_FUNC),
227- SYM_TYPE(STT_SECTION),
228- SYM_TYPE(STT_FILE),
229- SYM_TYPE(STT_COMMON),
230- SYM_TYPE(STT_TLS),
231-#undef SYM_TYPE
232- };
233- const char *name = "unknown sym type name";
234- if (type < ARRAY_SIZE(type_name)) {
235- name = type_name[type];
236- }
237- return name;
238-}
239-
240-static const char *sym_bind(unsigned bind)
241-{
242- static const char *bind_name[] = {
243-#define SYM_BIND(X) [X] = #X
244- SYM_BIND(STB_LOCAL),
245- SYM_BIND(STB_GLOBAL),
246- SYM_BIND(STB_WEAK),
247-#undef SYM_BIND
248- };
249- const char *name = "unknown sym bind name";
250- if (bind < ARRAY_SIZE(bind_name)) {
251- name = bind_name[bind];
252- }
253- return name;
254-}
255-
256-static const char *sym_visibility(unsigned visibility)
257-{
258- static const char *visibility_name[] = {
259-#define SYM_VISIBILITY(X) [X] = #X
260- SYM_VISIBILITY(STV_DEFAULT),
261- SYM_VISIBILITY(STV_INTERNAL),
262- SYM_VISIBILITY(STV_HIDDEN),
263- SYM_VISIBILITY(STV_PROTECTED),
264-#undef SYM_VISIBILITY
265- };
266- const char *name = "unknown sym visibility name";
267- if (visibility < ARRAY_SIZE(visibility_name)) {
268- name = visibility_name[visibility];
269- }
270- return name;
271-}
272-
273-static const char *rel_type(unsigned type)
274-{
275- static const char *type_name[] = {
276-#define REL_TYPE(X) [X] = #X
277- REL_TYPE(R_386_NONE),
278- REL_TYPE(R_386_32),
279- REL_TYPE(R_386_PC32),
280- REL_TYPE(R_386_GOT32),
281- REL_TYPE(R_386_PLT32),
282- REL_TYPE(R_386_COPY),
283- REL_TYPE(R_386_GLOB_DAT),
284- REL_TYPE(R_386_JMP_SLOT),
285- REL_TYPE(R_386_RELATIVE),
286- REL_TYPE(R_386_GOTOFF),
287- REL_TYPE(R_386_GOTPC),
288-#undef REL_TYPE
289- };
290- const char *name = "unknown type rel type name";
291- if (type < ARRAY_SIZE(type_name) && type_name[type]) {
292- name = type_name[type];
293- }
294- return name;
295-}
296-
297-static const char *sec_name(unsigned shndx)
298-{
299- const char *sec_strtab;
300- const char *name;
301- sec_strtab = secs[ehdr.e_shstrndx].strtab;
302- name = "<noname>";
303- if (shndx < ehdr.e_shnum) {
304- name = sec_strtab + secs[shndx].shdr.sh_name;
305- }
306- else if (shndx == SHN_ABS) {
307- name = "ABSOLUTE";
308- }
309- else if (shndx == SHN_COMMON) {
310- name = "COMMON";
311- }
312- return name;
313-}
314-
315-static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym)
316-{
317- const char *name;
318- name = "<noname>";
319- if (sym->st_name) {
320- name = sym_strtab + sym->st_name;
321- }
322- else {
323- name = sec_name(secs[sym->st_shndx].shdr.sh_name);
324- }
325- return name;
326-}
327-
328-
329-
330-#if BYTE_ORDER == LITTLE_ENDIAN
331-#define le16_to_cpu(val) (val)
332-#define le32_to_cpu(val) (val)
333-#endif
334-#if BYTE_ORDER == BIG_ENDIAN
335-#define le16_to_cpu(val) bswap_16(val)
336-#define le32_to_cpu(val) bswap_32(val)
337-#endif
338-
339-static uint16_t elf16_to_cpu(uint16_t val)
340-{
341- return le16_to_cpu(val);
342-}
343-
344-static uint32_t elf32_to_cpu(uint32_t val)
345-{
346- return le32_to_cpu(val);
347-}
348-
349-static void read_ehdr(FILE *fp)
350-{
351- if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) {
352- die("Cannot read ELF header: %s\n",
353- strerror(errno));
354- }
355- if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) {
356- die("No ELF magic\n");
357- }
358- if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) {
359- die("Not a 32 bit executable\n");
360- }
361- if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) {
362- die("Not a LSB ELF executable\n");
363- }
364- if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) {
365- die("Unknown ELF version\n");
366- }
367- /* Convert the fields to native endian */
368- ehdr.e_type = elf16_to_cpu(ehdr.e_type);
369- ehdr.e_machine = elf16_to_cpu(ehdr.e_machine);
370- ehdr.e_version = elf32_to_cpu(ehdr.e_version);
371- ehdr.e_entry = elf32_to_cpu(ehdr.e_entry);
372- ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff);
373- ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff);
374- ehdr.e_flags = elf32_to_cpu(ehdr.e_flags);
375- ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize);
376- ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize);
377- ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum);
378- ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize);
379- ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum);
380- ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx);
381-
382- if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) {
383- die("Unsupported ELF header type\n");
384- }
385- if (ehdr.e_machine != EM_386) {
386- die("Not for x86\n");
387- }
388- if (ehdr.e_version != EV_CURRENT) {
389- die("Unknown ELF version\n");
390- }
391- if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) {
392- die("Bad Elf header size\n");
393- }
394- if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) {
395- die("Bad program header entry\n");
396- }
397- if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) {
398- die("Bad section header entry\n");
399- }
400- if (ehdr.e_shstrndx >= ehdr.e_shnum) {
401- die("String table index out of bounds\n");
402- }
403-}
404-
405-static void read_shdrs(FILE *fp)
406-{
407- int i;
408- Elf32_Shdr shdr;
409-
410- secs = calloc(ehdr.e_shnum, sizeof(struct section));
411- if (!secs) {
412- die("Unable to allocate %d section headers\n",
413- ehdr.e_shnum);
414- }
415- if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) {
416- die("Seek to %d failed: %s\n",
417- ehdr.e_shoff, strerror(errno));
418- }
419- for (i = 0; i < ehdr.e_shnum; i++) {
420- struct section *sec = &secs[i];
421- if (fread(&shdr, sizeof shdr, 1, fp) != 1)
422- die("Cannot read ELF section headers %d/%d: %s\n",
423- i, ehdr.e_shnum, strerror(errno));
424- sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name);
425- sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type);
426- sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags);
427- sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr);
428- sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset);
429- sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size);
430- sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link);
431- sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info);
432- sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign);
433- sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize);
434- if (sec->shdr.sh_link < ehdr.e_shnum)
435- sec->link = &secs[sec->shdr.sh_link];
436- }
437-
438-}
439-
440-static void read_strtabs(FILE *fp)
441-{
442- int i;
443- for (i = 0; i < ehdr.e_shnum; i++) {
444- struct section *sec = &secs[i];
445- if (sec->shdr.sh_type != SHT_STRTAB) {
446- continue;
447- }
448- sec->strtab = malloc(sec->shdr.sh_size);
449- if (!sec->strtab) {
450- die("malloc of %d bytes for strtab failed\n",
451- sec->shdr.sh_size);
452- }
453- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
454- die("Seek to %d failed: %s\n",
455- sec->shdr.sh_offset, strerror(errno));
456- }
457- if (fread(sec->strtab, 1, sec->shdr.sh_size, fp)
458- != sec->shdr.sh_size) {
459- die("Cannot read symbol table: %s\n",
460- strerror(errno));
461- }
462- }
463-}
464-
465-static void read_symtabs(FILE *fp)
466-{
467- int i,j;
468- for (i = 0; i < ehdr.e_shnum; i++) {
469- struct section *sec = &secs[i];
470- if (sec->shdr.sh_type != SHT_SYMTAB) {
471- continue;
472- }
473- sec->symtab = malloc(sec->shdr.sh_size);
474- if (!sec->symtab) {
475- die("malloc of %d bytes for symtab failed\n",
476- sec->shdr.sh_size);
477- }
478- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
479- die("Seek to %d failed: %s\n",
480- sec->shdr.sh_offset, strerror(errno));
481- }
482- if (fread(sec->symtab, 1, sec->shdr.sh_size, fp)
483- != sec->shdr.sh_size) {
484- die("Cannot read symbol table: %s\n",
485- strerror(errno));
486- }
487- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
488- Elf32_Sym *sym = &sec->symtab[j];
489- sym->st_name = elf32_to_cpu(sym->st_name);
490- sym->st_value = elf32_to_cpu(sym->st_value);
491- sym->st_size = elf32_to_cpu(sym->st_size);
492- sym->st_shndx = elf16_to_cpu(sym->st_shndx);
493- }
494- }
495-}
496-
497-
498-static void read_relocs(FILE *fp)
499-{
500- int i,j;
501- for (i = 0; i < ehdr.e_shnum; i++) {
502- struct section *sec = &secs[i];
503- if (sec->shdr.sh_type != SHT_REL) {
504- continue;
505- }
506- sec->reltab = malloc(sec->shdr.sh_size);
507- if (!sec->reltab) {
508- die("malloc of %d bytes for relocs failed\n",
509- sec->shdr.sh_size);
510- }
511- if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
512- die("Seek to %d failed: %s\n",
513- sec->shdr.sh_offset, strerror(errno));
514- }
515- if (fread(sec->reltab, 1, sec->shdr.sh_size, fp)
516- != sec->shdr.sh_size) {
517- die("Cannot read symbol table: %s\n",
518- strerror(errno));
519- }
520- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
521- Elf32_Rel *rel = &sec->reltab[j];
522- rel->r_offset = elf32_to_cpu(rel->r_offset);
523- rel->r_info = elf32_to_cpu(rel->r_info);
524- }
525- }
526-}
527-
528-
529-static void print_absolute_symbols(void)
530-{
531- int i;
532- printf("Absolute symbols\n");
533- printf(" Num: Value Size Type Bind Visibility Name\n");
534- for (i = 0; i < ehdr.e_shnum; i++) {
535- struct section *sec = &secs[i];
536- char *sym_strtab;
537- int j;
538-
539- if (sec->shdr.sh_type != SHT_SYMTAB) {
540- continue;
541- }
542- sym_strtab = sec->link->strtab;
543- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
544- Elf32_Sym *sym;
545- const char *name;
546- sym = &sec->symtab[j];
547- name = sym_name(sym_strtab, sym);
548- if (sym->st_shndx != SHN_ABS) {
549- continue;
550- }
551- printf("%5d %08x %5d %10s %10s %12s %s\n",
552- j, sym->st_value, sym->st_size,
553- sym_type(ELF32_ST_TYPE(sym->st_info)),
554- sym_bind(ELF32_ST_BIND(sym->st_info)),
555- sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)),
556- name);
557- }
558- }
559- printf("\n");
560-}
561-
562-static void print_absolute_relocs(void)
563-{
564- int i, printed = 0;
565-
566- for (i = 0; i < ehdr.e_shnum; i++) {
567- struct section *sec = &secs[i];
568- struct section *sec_applies, *sec_symtab;
569- char *sym_strtab;
570- Elf32_Sym *sh_symtab;
571- int j;
572- if (sec->shdr.sh_type != SHT_REL) {
573- continue;
574- }
575- sec_symtab = sec->link;
576- sec_applies = &secs[sec->shdr.sh_info];
577- if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
578- continue;
579- }
580- sh_symtab = sec_symtab->symtab;
581- sym_strtab = sec_symtab->link->strtab;
582- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
583- Elf32_Rel *rel;
584- Elf32_Sym *sym;
585- const char *name;
586- rel = &sec->reltab[j];
587- sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
588- name = sym_name(sym_strtab, sym);
589- if (sym->st_shndx != SHN_ABS) {
590- continue;
591- }
592-
593- /* Absolute symbols are not relocated if bzImage is
594- * loaded at a non-compiled address. Display a warning
595- * to user at compile time about the absolute
596- * relocations present.
597- *
598- * User need to audit the code to make sure
599- * some symbols which should have been section
600- * relative have not become absolute because of some
601- * linker optimization or wrong programming usage.
602- *
603- * Before warning check if this absolute symbol
604- * relocation is harmless.
605- */
606- if (is_abs_reloc(name) || is_rel_reloc(name))
607- continue;
608-
609- if (!printed) {
610- printf("WARNING: Absolute relocations"
611- " present\n");
612- printf("Offset Info Type Sym.Value "
613- "Sym.Name\n");
614- printed = 1;
615- }
616-
617- printf("%08x %08x %10s %08x %s\n",
618- rel->r_offset,
619- rel->r_info,
620- rel_type(ELF32_R_TYPE(rel->r_info)),
621- sym->st_value,
622- name);
623- }
624- }
625-
626- if (printed)
627- printf("\n");
628-}
629-
630-static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym))
631-{
632- int i;
633- /* Walk through the relocations */
634- for (i = 0; i < ehdr.e_shnum; i++) {
635- char *sym_strtab;
636- Elf32_Sym *sh_symtab;
637- struct section *sec_applies, *sec_symtab;
638- int j;
639- struct section *sec = &secs[i];
640-
641- if (sec->shdr.sh_type != SHT_REL) {
642- continue;
643- }
644- sec_symtab = sec->link;
645- sec_applies = &secs[sec->shdr.sh_info];
646- if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
647- continue;
648- }
649- sh_symtab = sec_symtab->symtab;
650- sym_strtab = sec_symtab->link->strtab;
651- for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
652- Elf32_Rel *rel;
653- Elf32_Sym *sym;
654- unsigned r_type;
655- rel = &sec->reltab[j];
656- sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
657- r_type = ELF32_R_TYPE(rel->r_info);
658- /* Don't visit relocations to absolute symbols */
659- if (sym->st_shndx == SHN_ABS &&
660- !is_rel_reloc(sym_name(sym_strtab, sym))) {
661- continue;
662- }
663- switch (r_type) {
664- case R_386_NONE:
665- case R_386_PC32:
666- /*
667- * NONE can be ignored and and PC relative
668- * relocations don't need to be adjusted.
669- */
670- break;
671- case R_386_32:
672- /* Visit relocations that need to be adjusted */
673- visit(rel, sym);
674- break;
675- default:
676- die("Unsupported relocation type: %s (%d)\n",
677- rel_type(r_type), r_type);
678- break;
679- }
680- }
681- }
682-}
683-
684-static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
685-{
686- reloc_count += 1;
687-}
688-
689-static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
690-{
691- /* Remember the address that needs to be adjusted. */
692- relocs[reloc_idx++] = rel->r_offset;
693-}
694-
695-static int cmp_relocs(const void *va, const void *vb)
696-{
697- const unsigned long *a, *b;
698- a = va; b = vb;
699- return (*a == *b)? 0 : (*a > *b)? 1 : -1;
700-}
701-
702-static void emit_relocs(int as_text)
703-{
704- int i;
705- /* Count how many relocations I have and allocate space for them. */
706- reloc_count = 0;
707- walk_relocs(count_reloc);
708- relocs = malloc(reloc_count * sizeof(relocs[0]));
709- if (!relocs) {
710- die("malloc of %d entries for relocs failed\n",
711- reloc_count);
712- }
713- /* Collect up the relocations */
714- reloc_idx = 0;
715- walk_relocs(collect_reloc);
716-
717- /* Order the relocations for more efficient processing */
718- qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs);
719-
720- /* Print the relocations */
721- if (as_text) {
722- /* Print the relocations in a form suitable that
723- * gas will like.
724- */
725- printf(".section \".data.reloc\",\"a\"\n");
726- printf(".balign 4\n");
727- for (i = 0; i < reloc_count; i++) {
728- printf("\t .long 0x%08lx\n", relocs[i]);
729- }
730- printf("\n");
731- }
732- else {
733- unsigned char buf[4];
734- /* Print a stop */
735- fwrite("\0\0\0\0", 4, 1, stdout);
736- /* Now print each relocation */
737- for (i = 0; i < reloc_count; i++) {
738- buf[0] = (relocs[i] >> 0) & 0xff;
739- buf[1] = (relocs[i] >> 8) & 0xff;
740- buf[2] = (relocs[i] >> 16) & 0xff;
741- buf[3] = (relocs[i] >> 24) & 0xff;
742- fwrite(buf, 4, 1, stdout);
743- }
744- }
745-}
746-
747-static void usage(void)
748-{
749- die("relocs [--abs-syms |--abs-relocs | --text] vmlinux\n");
750-}
751-
752-int main(int argc, char **argv)
753-{
754- int show_absolute_syms, show_absolute_relocs;
755- int as_text;
756- const char *fname;
757- FILE *fp;
758- int i;
759-
760- regex_init();
761-
762- show_absolute_syms = 0;
763- show_absolute_relocs = 0;
764- as_text = 0;
765- fname = NULL;
766- for (i = 1; i < argc; i++) {
767- char *arg = argv[i];
768- if (*arg == '-') {
769- if (strcmp(argv[1], "--abs-syms") == 0) {
770- show_absolute_syms = 1;
771- continue;
772- }
773-
774- if (strcmp(argv[1], "--abs-relocs") == 0) {
775- show_absolute_relocs = 1;
776- continue;
777- }
778- else if (strcmp(argv[1], "--text") == 0) {
779- as_text = 1;
780- continue;
781- }
782- }
783- else if (!fname) {
784- fname = arg;
785- continue;
786- }
787- usage();
788- }
789- if (!fname) {
790- usage();
791- }
792- fp = fopen(fname, "r");
793- if (!fp) {
794- die("Cannot open %s: %s\n",
795- fname, strerror(errno));
796- }
797- read_ehdr(fp);
798- read_shdrs(fp);
799- read_strtabs(fp);
800- read_symtabs(fp);
801- read_relocs(fp);
802- if (show_absolute_syms) {
803- print_absolute_symbols();
804- return 0;
805- }
806- if (show_absolute_relocs) {
807- print_absolute_relocs();
808- return 0;
809- }
810- emit_relocs(as_text);
811- return 0;
812-}
813diff --git a/arch/x86/tools/.gitignore b/arch/x86/tools/.gitignore
814new file mode 100644
815index 0000000..be0ed06
816--- /dev/null
817+++ b/arch/x86/tools/.gitignore
818@@ -0,0 +1 @@
819+relocs
820diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
821index f820826..162a34a 100644
822--- a/arch/x86/tools/Makefile
823+++ b/arch/x86/tools/Makefile
824@@ -29,3 +29,6 @@ HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/
825 # Dependencies are also needed.
826 $(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
827
828+HOST_EXTRACFLAGS += -I$(srctree)/tools/include
829+hostprogs-y += relocs
830+relocs: $(obj)/relocs
831diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
832new file mode 100644
833index 0000000..2071bad
834--- /dev/null
835+++ b/arch/x86/tools/relocs.c
836@@ -0,0 +1,799 @@
837+#include <stdio.h>
838+#include <stdarg.h>
839+#include <stdlib.h>
840+#include <stdint.h>
841+#include <string.h>
842+#include <errno.h>
843+#include <unistd.h>
844+#include <elf.h>
845+#include <byteswap.h>
846+#define USE_BSD
847+#include <endian.h>
848+#include <regex.h>
849+
850+static void die(char *fmt, ...);
851+
852+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
853+static Elf32_Ehdr ehdr;
854+static unsigned long reloc_count, reloc_idx;
855+static unsigned long *relocs;
856+static unsigned long reloc16_count, reloc16_idx;
857+static unsigned long *relocs16;
858+
859+struct section {
860+ Elf32_Shdr shdr;
861+ struct section *link;
862+ Elf32_Sym *symtab;
863+ Elf32_Rel *reltab;
864+ char *strtab;
865+};
866+static struct section *secs;
867+
868+enum symtype {
869+ S_ABS,
870+ S_REL,
871+ S_SEG,
872+ S_LIN,
873+ S_NSYMTYPES
874+};
875+
876+static const char * const sym_regex_kernel[S_NSYMTYPES] = {
877+/*
878+ * Following symbols have been audited. There values are constant and do
879+ * not change if bzImage is loaded at a different physical address than
880+ * the address for which it has been compiled. Don't warn user about
881+ * absolute relocations present w.r.t these symbols.
882+ */
883+ [S_ABS] =
884+ "^(xen_irq_disable_direct_reloc$|"
885+ "xen_save_fl_direct_reloc$|"
886+ "VDSO|"
887+ "__crc_)",
888+
889+/*
890+ * These symbols are known to be relative, even if the linker marks them
891+ * as absolute (typically defined outside any section in the linker script.)
892+ */
893+ [S_REL] =
894+ "^_end$",
895+};
896+
897+
898+static const char * const sym_regex_realmode[S_NSYMTYPES] = {
899+/*
900+ * These are 16-bit segment symbols when compiling 16-bit code.
901+ */
902+ [S_SEG] =
903+ "^real_mode_seg$",
904+
905+/*
906+ * These are offsets belonging to segments, as opposed to linear addresses,
907+ * when compiling 16-bit code.
908+ */
909+ [S_LIN] =
910+ "^pa_",
911+};
912+
913+static const char * const *sym_regex;
914+
915+static regex_t sym_regex_c[S_NSYMTYPES];
916+static int is_reloc(enum symtype type, const char *sym_name)
917+{
918+ return sym_regex[type] &&
919+ !regexec(&sym_regex_c[type], sym_name, 0, NULL, 0);
920+}
921+
922+static void regex_init(int use_real_mode)
923+{
924+ char errbuf[128];
925+ int err;
926+ int i;
927+
928+ if (use_real_mode)
929+ sym_regex = sym_regex_realmode;
930+ else
931+ sym_regex = sym_regex_kernel;
932+
933+ for (i = 0; i < S_NSYMTYPES; i++) {
934+ if (!sym_regex[i])
935+ continue;
936+
937+ err = regcomp(&sym_regex_c[i], sym_regex[i],
938+ REG_EXTENDED|REG_NOSUB);
939+
940+ if (err) {
941+ regerror(err, &sym_regex_c[i], errbuf, sizeof errbuf);
942+ die("%s", errbuf);
943+ }
944+ }
945+}
946+
947+static void die(char *fmt, ...)
948+{
949+ va_list ap;
950+ va_start(ap, fmt);
951+ vfprintf(stderr, fmt, ap);
952+ va_end(ap);
953+ exit(1);
954+}
955+
956+static const char *sym_type(unsigned type)
957+{
958+ static const char *type_name[] = {
959+#define SYM_TYPE(X) [X] = #X
960+ SYM_TYPE(STT_NOTYPE),
961+ SYM_TYPE(STT_OBJECT),
962+ SYM_TYPE(STT_FUNC),
963+ SYM_TYPE(STT_SECTION),
964+ SYM_TYPE(STT_FILE),
965+ SYM_TYPE(STT_COMMON),
966+ SYM_TYPE(STT_TLS),
967+#undef SYM_TYPE
968+ };
969+ const char *name = "unknown sym type name";
970+ if (type < ARRAY_SIZE(type_name)) {
971+ name = type_name[type];
972+ }
973+ return name;
974+}
975+
976+static const char *sym_bind(unsigned bind)
977+{
978+ static const char *bind_name[] = {
979+#define SYM_BIND(X) [X] = #X
980+ SYM_BIND(STB_LOCAL),
981+ SYM_BIND(STB_GLOBAL),
982+ SYM_BIND(STB_WEAK),
983+#undef SYM_BIND
984+ };
985+ const char *name = "unknown sym bind name";
986+ if (bind < ARRAY_SIZE(bind_name)) {
987+ name = bind_name[bind];
988+ }
989+ return name;
990+}
991+
992+static const char *sym_visibility(unsigned visibility)
993+{
994+ static const char *visibility_name[] = {
995+#define SYM_VISIBILITY(X) [X] = #X
996+ SYM_VISIBILITY(STV_DEFAULT),
997+ SYM_VISIBILITY(STV_INTERNAL),
998+ SYM_VISIBILITY(STV_HIDDEN),
999+ SYM_VISIBILITY(STV_PROTECTED),
1000+#undef SYM_VISIBILITY
1001+ };
1002+ const char *name = "unknown sym visibility name";
1003+ if (visibility < ARRAY_SIZE(visibility_name)) {
1004+ name = visibility_name[visibility];
1005+ }
1006+ return name;
1007+}
1008+
1009+static const char *rel_type(unsigned type)
1010+{
1011+ static const char *type_name[] = {
1012+#define REL_TYPE(X) [X] = #X
1013+ REL_TYPE(R_386_NONE),
1014+ REL_TYPE(R_386_32),
1015+ REL_TYPE(R_386_PC32),
1016+ REL_TYPE(R_386_GOT32),
1017+ REL_TYPE(R_386_PLT32),
1018+ REL_TYPE(R_386_COPY),
1019+ REL_TYPE(R_386_GLOB_DAT),
1020+ REL_TYPE(R_386_JMP_SLOT),
1021+ REL_TYPE(R_386_RELATIVE),
1022+ REL_TYPE(R_386_GOTOFF),
1023+ REL_TYPE(R_386_GOTPC),
1024+ REL_TYPE(R_386_8),
1025+ REL_TYPE(R_386_PC8),
1026+ REL_TYPE(R_386_16),
1027+ REL_TYPE(R_386_PC16),
1028+#undef REL_TYPE
1029+ };
1030+ const char *name = "unknown type rel type name";
1031+ if (type < ARRAY_SIZE(type_name) && type_name[type]) {
1032+ name = type_name[type];
1033+ }
1034+ return name;
1035+}
1036+
1037+static const char *sec_name(unsigned shndx)
1038+{
1039+ const char *sec_strtab;
1040+ const char *name;
1041+ sec_strtab = secs[ehdr.e_shstrndx].strtab;
1042+ name = "<noname>";
1043+ if (shndx < ehdr.e_shnum) {
1044+ name = sec_strtab + secs[shndx].shdr.sh_name;
1045+ }
1046+ else if (shndx == SHN_ABS) {
1047+ name = "ABSOLUTE";
1048+ }
1049+ else if (shndx == SHN_COMMON) {
1050+ name = "COMMON";
1051+ }
1052+ return name;
1053+}
1054+
1055+static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym)
1056+{
1057+ const char *name;
1058+ name = "<noname>";
1059+ if (sym->st_name) {
1060+ name = sym_strtab + sym->st_name;
1061+ }
1062+ else {
1063+ name = sec_name(sym->st_shndx);
1064+ }
1065+ return name;
1066+}
1067+
1068+
1069+
1070+#if BYTE_ORDER == LITTLE_ENDIAN
1071+#define le16_to_cpu(val) (val)
1072+#define le32_to_cpu(val) (val)
1073+#endif
1074+#if BYTE_ORDER == BIG_ENDIAN
1075+#define le16_to_cpu(val) bswap_16(val)
1076+#define le32_to_cpu(val) bswap_32(val)
1077+#endif
1078+
1079+static uint16_t elf16_to_cpu(uint16_t val)
1080+{
1081+ return le16_to_cpu(val);
1082+}
1083+
1084+static uint32_t elf32_to_cpu(uint32_t val)
1085+{
1086+ return le32_to_cpu(val);
1087+}
1088+
1089+static void read_ehdr(FILE *fp)
1090+{
1091+ if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) {
1092+ die("Cannot read ELF header: %s\n",
1093+ strerror(errno));
1094+ }
1095+ if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) {
1096+ die("No ELF magic\n");
1097+ }
1098+ if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) {
1099+ die("Not a 32 bit executable\n");
1100+ }
1101+ if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) {
1102+ die("Not a LSB ELF executable\n");
1103+ }
1104+ if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) {
1105+ die("Unknown ELF version\n");
1106+ }
1107+ /* Convert the fields to native endian */
1108+ ehdr.e_type = elf16_to_cpu(ehdr.e_type);
1109+ ehdr.e_machine = elf16_to_cpu(ehdr.e_machine);
1110+ ehdr.e_version = elf32_to_cpu(ehdr.e_version);
1111+ ehdr.e_entry = elf32_to_cpu(ehdr.e_entry);
1112+ ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff);
1113+ ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff);
1114+ ehdr.e_flags = elf32_to_cpu(ehdr.e_flags);
1115+ ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize);
1116+ ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize);
1117+ ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum);
1118+ ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize);
1119+ ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum);
1120+ ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx);
1121+
1122+ if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) {
1123+ die("Unsupported ELF header type\n");
1124+ }
1125+ if (ehdr.e_machine != EM_386) {
1126+ die("Not for x86\n");
1127+ }
1128+ if (ehdr.e_version != EV_CURRENT) {
1129+ die("Unknown ELF version\n");
1130+ }
1131+ if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) {
1132+ die("Bad Elf header size\n");
1133+ }
1134+ if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) {
1135+ die("Bad program header entry\n");
1136+ }
1137+ if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) {
1138+ die("Bad section header entry\n");
1139+ }
1140+ if (ehdr.e_shstrndx >= ehdr.e_shnum) {
1141+ die("String table index out of bounds\n");
1142+ }
1143+}
1144+
1145+static void read_shdrs(FILE *fp)
1146+{
1147+ int i;
1148+ Elf32_Shdr shdr;
1149+
1150+ secs = calloc(ehdr.e_shnum, sizeof(struct section));
1151+ if (!secs) {
1152+ die("Unable to allocate %d section headers\n",
1153+ ehdr.e_shnum);
1154+ }
1155+ if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) {
1156+ die("Seek to %d failed: %s\n",
1157+ ehdr.e_shoff, strerror(errno));
1158+ }
1159+ for (i = 0; i < ehdr.e_shnum; i++) {
1160+ struct section *sec = &secs[i];
1161+ if (fread(&shdr, sizeof shdr, 1, fp) != 1)
1162+ die("Cannot read ELF section headers %d/%d: %s\n",
1163+ i, ehdr.e_shnum, strerror(errno));
1164+ sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name);
1165+ sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type);
1166+ sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags);
1167+ sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr);
1168+ sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset);
1169+ sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size);
1170+ sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link);
1171+ sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info);
1172+ sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign);
1173+ sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize);
1174+ if (sec->shdr.sh_link < ehdr.e_shnum)
1175+ sec->link = &secs[sec->shdr.sh_link];
1176+ }
1177+
1178+}
1179+
1180+static void read_strtabs(FILE *fp)
1181+{
1182+ int i;
1183+ for (i = 0; i < ehdr.e_shnum; i++) {
1184+ struct section *sec = &secs[i];
1185+ if (sec->shdr.sh_type != SHT_STRTAB) {
1186+ continue;
1187+ }
1188+ sec->strtab = malloc(sec->shdr.sh_size);
1189+ if (!sec->strtab) {
1190+ die("malloc of %d bytes for strtab failed\n",
1191+ sec->shdr.sh_size);
1192+ }
1193+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
1194+ die("Seek to %d failed: %s\n",
1195+ sec->shdr.sh_offset, strerror(errno));
1196+ }
1197+ if (fread(sec->strtab, 1, sec->shdr.sh_size, fp)
1198+ != sec->shdr.sh_size) {
1199+ die("Cannot read symbol table: %s\n",
1200+ strerror(errno));
1201+ }
1202+ }
1203+}
1204+
1205+static void read_symtabs(FILE *fp)
1206+{
1207+ int i,j;
1208+ for (i = 0; i < ehdr.e_shnum; i++) {
1209+ struct section *sec = &secs[i];
1210+ if (sec->shdr.sh_type != SHT_SYMTAB) {
1211+ continue;
1212+ }
1213+ sec->symtab = malloc(sec->shdr.sh_size);
1214+ if (!sec->symtab) {
1215+ die("malloc of %d bytes for symtab failed\n",
1216+ sec->shdr.sh_size);
1217+ }
1218+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
1219+ die("Seek to %d failed: %s\n",
1220+ sec->shdr.sh_offset, strerror(errno));
1221+ }
1222+ if (fread(sec->symtab, 1, sec->shdr.sh_size, fp)
1223+ != sec->shdr.sh_size) {
1224+ die("Cannot read symbol table: %s\n",
1225+ strerror(errno));
1226+ }
1227+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
1228+ Elf32_Sym *sym = &sec->symtab[j];
1229+ sym->st_name = elf32_to_cpu(sym->st_name);
1230+ sym->st_value = elf32_to_cpu(sym->st_value);
1231+ sym->st_size = elf32_to_cpu(sym->st_size);
1232+ sym->st_shndx = elf16_to_cpu(sym->st_shndx);
1233+ }
1234+ }
1235+}
1236+
1237+
1238+static void read_relocs(FILE *fp)
1239+{
1240+ int i,j;
1241+ for (i = 0; i < ehdr.e_shnum; i++) {
1242+ struct section *sec = &secs[i];
1243+ if (sec->shdr.sh_type != SHT_REL) {
1244+ continue;
1245+ }
1246+ sec->reltab = malloc(sec->shdr.sh_size);
1247+ if (!sec->reltab) {
1248+ die("malloc of %d bytes for relocs failed\n",
1249+ sec->shdr.sh_size);
1250+ }
1251+ if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) {
1252+ die("Seek to %d failed: %s\n",
1253+ sec->shdr.sh_offset, strerror(errno));
1254+ }
1255+ if (fread(sec->reltab, 1, sec->shdr.sh_size, fp)
1256+ != sec->shdr.sh_size) {
1257+ die("Cannot read symbol table: %s\n",
1258+ strerror(errno));
1259+ }
1260+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
1261+ Elf32_Rel *rel = &sec->reltab[j];
1262+ rel->r_offset = elf32_to_cpu(rel->r_offset);
1263+ rel->r_info = elf32_to_cpu(rel->r_info);
1264+ }
1265+ }
1266+}
1267+
1268+
1269+static void print_absolute_symbols(void)
1270+{
1271+ int i;
1272+ printf("Absolute symbols\n");
1273+ printf(" Num: Value Size Type Bind Visibility Name\n");
1274+ for (i = 0; i < ehdr.e_shnum; i++) {
1275+ struct section *sec = &secs[i];
1276+ char *sym_strtab;
1277+ int j;
1278+
1279+ if (sec->shdr.sh_type != SHT_SYMTAB) {
1280+ continue;
1281+ }
1282+ sym_strtab = sec->link->strtab;
1283+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) {
1284+ Elf32_Sym *sym;
1285+ const char *name;
1286+ sym = &sec->symtab[j];
1287+ name = sym_name(sym_strtab, sym);
1288+ if (sym->st_shndx != SHN_ABS) {
1289+ continue;
1290+ }
1291+ printf("%5d %08x %5d %10s %10s %12s %s\n",
1292+ j, sym->st_value, sym->st_size,
1293+ sym_type(ELF32_ST_TYPE(sym->st_info)),
1294+ sym_bind(ELF32_ST_BIND(sym->st_info)),
1295+ sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)),
1296+ name);
1297+ }
1298+ }
1299+ printf("\n");
1300+}
1301+
1302+static void print_absolute_relocs(void)
1303+{
1304+ int i, printed = 0;
1305+
1306+ for (i = 0; i < ehdr.e_shnum; i++) {
1307+ struct section *sec = &secs[i];
1308+ struct section *sec_applies, *sec_symtab;
1309+ char *sym_strtab;
1310+ Elf32_Sym *sh_symtab;
1311+ int j;
1312+ if (sec->shdr.sh_type != SHT_REL) {
1313+ continue;
1314+ }
1315+ sec_symtab = sec->link;
1316+ sec_applies = &secs[sec->shdr.sh_info];
1317+ if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
1318+ continue;
1319+ }
1320+ sh_symtab = sec_symtab->symtab;
1321+ sym_strtab = sec_symtab->link->strtab;
1322+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
1323+ Elf32_Rel *rel;
1324+ Elf32_Sym *sym;
1325+ const char *name;
1326+ rel = &sec->reltab[j];
1327+ sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
1328+ name = sym_name(sym_strtab, sym);
1329+ if (sym->st_shndx != SHN_ABS) {
1330+ continue;
1331+ }
1332+
1333+ /* Absolute symbols are not relocated if bzImage is
1334+ * loaded at a non-compiled address. Display a warning
1335+ * to user at compile time about the absolute
1336+ * relocations present.
1337+ *
1338+ * User need to audit the code to make sure
1339+ * some symbols which should have been section
1340+ * relative have not become absolute because of some
1341+ * linker optimization or wrong programming usage.
1342+ *
1343+ * Before warning check if this absolute symbol
1344+ * relocation is harmless.
1345+ */
1346+ if (is_reloc(S_ABS, name) || is_reloc(S_REL, name))
1347+ continue;
1348+
1349+ if (!printed) {
1350+ printf("WARNING: Absolute relocations"
1351+ " present\n");
1352+ printf("Offset Info Type Sym.Value "
1353+ "Sym.Name\n");
1354+ printed = 1;
1355+ }
1356+
1357+ printf("%08x %08x %10s %08x %s\n",
1358+ rel->r_offset,
1359+ rel->r_info,
1360+ rel_type(ELF32_R_TYPE(rel->r_info)),
1361+ sym->st_value,
1362+ name);
1363+ }
1364+ }
1365+
1366+ if (printed)
1367+ printf("\n");
1368+}
1369+
1370+static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
1371+ int use_real_mode)
1372+{
1373+ int i;
1374+ /* Walk through the relocations */
1375+ for (i = 0; i < ehdr.e_shnum; i++) {
1376+ char *sym_strtab;
1377+ Elf32_Sym *sh_symtab;
1378+ struct section *sec_applies, *sec_symtab;
1379+ int j;
1380+ struct section *sec = &secs[i];
1381+
1382+ if (sec->shdr.sh_type != SHT_REL) {
1383+ continue;
1384+ }
1385+ sec_symtab = sec->link;
1386+ sec_applies = &secs[sec->shdr.sh_info];
1387+ if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
1388+ continue;
1389+ }
1390+ sh_symtab = sec_symtab->symtab;
1391+ sym_strtab = sec_symtab->link->strtab;
1392+ for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) {
1393+ Elf32_Rel *rel;
1394+ Elf32_Sym *sym;
1395+ unsigned r_type;
1396+ const char *symname;
1397+ rel = &sec->reltab[j];
1398+ sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
1399+ r_type = ELF32_R_TYPE(rel->r_info);
1400+
1401+ switch (r_type) {
1402+ case R_386_NONE:
1403+ case R_386_PC32:
1404+ case R_386_PC16:
1405+ case R_386_PC8:
1406+ /*
1407+ * NONE can be ignored and and PC relative
1408+ * relocations don't need to be adjusted.
1409+ */
1410+ break;
1411+
1412+ case R_386_16:
1413+ symname = sym_name(sym_strtab, sym);
1414+ if (!use_real_mode)
1415+ goto bad;
1416+ if (sym->st_shndx == SHN_ABS) {
1417+ if (is_reloc(S_ABS, symname))
1418+ break;
1419+ else if (!is_reloc(S_SEG, symname))
1420+ goto bad;
1421+ } else {
1422+ if (is_reloc(S_LIN, symname))
1423+ goto bad;
1424+ else
1425+ break;
1426+ }
1427+ visit(rel, sym);
1428+ break;
1429+
1430+ case R_386_32:
1431+ symname = sym_name(sym_strtab, sym);
1432+ if (sym->st_shndx == SHN_ABS) {
1433+ if (is_reloc(S_ABS, symname))
1434+ break;
1435+ else if (!is_reloc(S_REL, symname))
1436+ goto bad;
1437+ } else {
1438+ if (use_real_mode &&
1439+ !is_reloc(S_LIN, symname))
1440+ break;
1441+ }
1442+ visit(rel, sym);
1443+ break;
1444+ default:
1445+ die("Unsupported relocation type: %s (%d)\n",
1446+ rel_type(r_type), r_type);
1447+ break;
1448+ bad:
1449+ symname = sym_name(sym_strtab, sym);
1450+ die("Invalid %s relocation: %s\n",
1451+ rel_type(r_type), symname);
1452+ }
1453+ }
1454+ }
1455+}
1456+
1457+static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
1458+{
1459+ if (ELF32_R_TYPE(rel->r_info) == R_386_16)
1460+ reloc16_count++;
1461+ else
1462+ reloc_count++;
1463+}
1464+
1465+static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym)
1466+{
1467+ /* Remember the address that needs to be adjusted. */
1468+ if (ELF32_R_TYPE(rel->r_info) == R_386_16)
1469+ relocs16[reloc16_idx++] = rel->r_offset;
1470+ else
1471+ relocs[reloc_idx++] = rel->r_offset;
1472+}
1473+
1474+static int cmp_relocs(const void *va, const void *vb)
1475+{
1476+ const unsigned long *a, *b;
1477+ a = va; b = vb;
1478+ return (*a == *b)? 0 : (*a > *b)? 1 : -1;
1479+}
1480+
1481+static int write32(unsigned int v, FILE *f)
1482+{
1483+ unsigned char buf[4];
1484+
1485+ buf[0] = (v >> 0) & 0xff;
1486+ buf[1] = (v >> 8) & 0xff;
1487+ buf[2] = (v >> 16) & 0xff;
1488+ buf[3] = (v >> 24) & 0xff;
1489+ return fwrite(buf, 1, 4, f) == 4 ? 0 : -1;
1490+}
1491+
1492+static void emit_relocs(int as_text, int use_real_mode)
1493+{
1494+ int i;
1495+ /* Count how many relocations I have and allocate space for them. */
1496+ reloc_count = 0;
1497+ walk_relocs(count_reloc, use_real_mode);
1498+ relocs = malloc(reloc_count * sizeof(relocs[0]));
1499+ if (!relocs) {
1500+ die("malloc of %d entries for relocs failed\n",
1501+ reloc_count);
1502+ }
1503+
1504+ relocs16 = malloc(reloc16_count * sizeof(relocs[0]));
1505+ if (!relocs16) {
1506+ die("malloc of %d entries for relocs16 failed\n",
1507+ reloc16_count);
1508+ }
1509+ /* Collect up the relocations */
1510+ reloc_idx = 0;
1511+ walk_relocs(collect_reloc, use_real_mode);
1512+
1513+ if (reloc16_count && !use_real_mode)
1514+ die("Segment relocations found but --realmode not specified\n");
1515+
1516+ /* Order the relocations for more efficient processing */
1517+ qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs);
1518+ qsort(relocs16, reloc16_count, sizeof(relocs16[0]), cmp_relocs);
1519+
1520+ /* Print the relocations */
1521+ if (as_text) {
1522+ /* Print the relocations in a form suitable that
1523+ * gas will like.
1524+ */
1525+ printf(".section \".data.reloc\",\"a\"\n");
1526+ printf(".balign 4\n");
1527+ if (use_real_mode) {
1528+ printf("\t.long %lu\n", reloc16_count);
1529+ for (i = 0; i < reloc16_count; i++)
1530+ printf("\t.long 0x%08lx\n", relocs16[i]);
1531+ printf("\t.long %lu\n", reloc_count);
1532+ for (i = 0; i < reloc_count; i++) {
1533+ printf("\t.long 0x%08lx\n", relocs[i]);
1534+ }
1535+ } else {
1536+ /* Print a stop */
1537+ printf("\t.long 0x%08lx\n", (unsigned long)0);
1538+ for (i = 0; i < reloc_count; i++) {
1539+ printf("\t.long 0x%08lx\n", relocs[i]);
1540+ }
1541+ }
1542+
1543+ printf("\n");
1544+ }
1545+ else {
1546+ if (use_real_mode) {
1547+ write32(reloc16_count, stdout);
1548+ for (i = 0; i < reloc16_count; i++)
1549+ write32(relocs16[i], stdout);
1550+ write32(reloc_count, stdout);
1551+
1552+ /* Now print each relocation */
1553+ for (i = 0; i < reloc_count; i++)
1554+ write32(relocs[i], stdout);
1555+ } else {
1556+ /* Print a stop */
1557+ write32(0, stdout);
1558+
1559+ /* Now print each relocation */
1560+ for (i = 0; i < reloc_count; i++) {
1561+ write32(relocs[i], stdout);
1562+ }
1563+ }
1564+ }
1565+}
1566+
1567+static void usage(void)
1568+{
1569+ die("relocs [--abs-syms|--abs-relocs|--text|--realmode] vmlinux\n");
1570+}
1571+
1572+int main(int argc, char **argv)
1573+{
1574+ int show_absolute_syms, show_absolute_relocs;
1575+ int as_text, use_real_mode;
1576+ const char *fname;
1577+ FILE *fp;
1578+ int i;
1579+
1580+ show_absolute_syms = 0;
1581+ show_absolute_relocs = 0;
1582+ as_text = 0;
1583+ use_real_mode = 0;
1584+ fname = NULL;
1585+ for (i = 1; i < argc; i++) {
1586+ char *arg = argv[i];
1587+ if (*arg == '-') {
1588+ if (strcmp(arg, "--abs-syms") == 0) {
1589+ show_absolute_syms = 1;
1590+ continue;
1591+ }
1592+ if (strcmp(arg, "--abs-relocs") == 0) {
1593+ show_absolute_relocs = 1;
1594+ continue;
1595+ }
1596+ if (strcmp(arg, "--text") == 0) {
1597+ as_text = 1;
1598+ continue;
1599+ }
1600+ if (strcmp(arg, "--realmode") == 0) {
1601+ use_real_mode = 1;
1602+ continue;
1603+ }
1604+ }
1605+ else if (!fname) {
1606+ fname = arg;
1607+ continue;
1608+ }
1609+ usage();
1610+ }
1611+ if (!fname) {
1612+ usage();
1613+ }
1614+ regex_init(use_real_mode);
1615+ fp = fopen(fname, "r");
1616+ if (!fp) {
1617+ die("Cannot open %s: %s\n",
1618+ fname, strerror(errno));
1619+ }
1620+ read_ehdr(fp);
1621+ read_shdrs(fp);
1622+ read_strtabs(fp);
1623+ read_symtabs(fp);
1624+ read_relocs(fp);
1625+ if (show_absolute_syms) {
1626+ print_absolute_symbols();
1627+ return 0;
1628+ }
1629+ if (show_absolute_relocs) {
1630+ print_absolute_relocs();
1631+ return 0;
1632+ }
1633+ emit_relocs(as_text, use_real_mode);
1634+ return 0;
1635+}
1636diff --git a/scripts/Makefile b/scripts/Makefile
1637index df7678f..3626666 100644
1638--- a/scripts/Makefile
1639+++ b/scripts/Makefile
1640@@ -8,6 +8,8 @@
1641 # conmakehash: Create arrays for initializing the kernel console tables
1642 # docproc: Used in Documentation/DocBook
1643
1644+HOST_EXTRACFLAGS += -I$(srctree)/tools/include
1645+
1646 hostprogs-$(CONFIG_KALLSYMS) += kallsyms
1647 hostprogs-$(CONFIG_LOGO) += pnmtologo
1648 hostprogs-$(CONFIG_VT) += conmakehash
1649--
16501.7.9.5
1651
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch
new file mode 100644
index 00000000..870616fe
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch
@@ -0,0 +1,43 @@
1From 41c3afdbac5e0d6a1dd88fcffb21e0916a517409 Mon Sep 17 00:00:00 2001
2From: "H. Peter Anvin" <hpa@linux.intel.com>
3Date: Fri, 18 May 2012 00:24:09 -0700
4Subject: [PATCH 112/117] x86, relocs: Workaround for binutils 2.22.52.0.1
5 section bug
6
7commit a3e854d95a76862cd37937e0b0438f540536771a upstream.
8
9GNU ld 2.22.52.0.1 has a bug that it blindly changes symbols from
10section-relative to absolute if they are in a section of zero length.
11This turns the symbols __init_begin and __init_end into absolute
12symbols. Let the relocs program know that those should be treated as
13relative symbols.
14
15Reported-by: Ingo Molnar <mingo@kernel.org>
16Signed-off-by: H. Peter Anvin <hpa@zytor.com>
17Cc: H.J. Lu <hjl.tools@gmail.com>
18Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 arch/x86/tools/relocs.c | 6 +++++-
22 1 file changed, 5 insertions(+), 1 deletion(-)
23
24diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
25index 2071bad..c218b07 100644
26--- a/arch/x86/tools/relocs.c
27+++ b/arch/x86/tools/relocs.c
28@@ -55,7 +55,11 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
29 * as absolute (typically defined outside any section in the linker script.)
30 */
31 [S_REL] =
32- "^_end$",
33+ "^(__init_(begin|end)|"
34+ "__x86_cpu_dev_(start|end)|"
35+ "(__parainstructions|__alt_instructions)(|_end)|"
36+ "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
37+ "_end)$"
38 };
39
40
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch
new file mode 100644
index 00000000..1908b5fc
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch
@@ -0,0 +1,69 @@
1From 4deb87f411769d6a601fa0994480b83e2b39e49c Mon Sep 17 00:00:00 2001
2From: "H. Peter Anvin" <hpa@linux.intel.com>
3Date: Fri, 18 May 2012 09:52:01 -0700
4Subject: [PATCH 113/117] x86, relocs: When printing an error, say relative or
5 absolute
6
7commit 24ab82bd9bf18f3efc69a131d73577940941e1b7 upstream.
8
9When the relocs tool throws an error, let the error message say if it
10is an absolute or relative symbol. This should make it a lot more
11clear what action the programmer needs to take and should help us find
12the reason if additional symbol bugs show up.
13
14Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 arch/x86/tools/relocs.c | 11 ++++++++---
18 1 file changed, 8 insertions(+), 3 deletions(-)
19
20diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
21index c218b07..c075507 100644
22--- a/arch/x86/tools/relocs.c
23+++ b/arch/x86/tools/relocs.c
24@@ -562,10 +562,14 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
25 Elf32_Sym *sym;
26 unsigned r_type;
27 const char *symname;
28+ int shn_abs;
29+
30 rel = &sec->reltab[j];
31 sym = &sh_symtab[ELF32_R_SYM(rel->r_info)];
32 r_type = ELF32_R_TYPE(rel->r_info);
33
34+ shn_abs = sym->st_shndx == SHN_ABS;
35+
36 switch (r_type) {
37 case R_386_NONE:
38 case R_386_PC32:
39@@ -581,7 +585,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
40 symname = sym_name(sym_strtab, sym);
41 if (!use_real_mode)
42 goto bad;
43- if (sym->st_shndx == SHN_ABS) {
44+ if (shn_abs) {
45 if (is_reloc(S_ABS, symname))
46 break;
47 else if (!is_reloc(S_SEG, symname))
48@@ -597,7 +601,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
49
50 case R_386_32:
51 symname = sym_name(sym_strtab, sym);
52- if (sym->st_shndx == SHN_ABS) {
53+ if (shn_abs) {
54 if (is_reloc(S_ABS, symname))
55 break;
56 else if (!is_reloc(S_REL, symname))
57@@ -615,7 +619,8 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym),
58 break;
59 bad:
60 symname = sym_name(sym_strtab, sym);
61- die("Invalid %s relocation: %s\n",
62+ die("Invalid %s %s relocation: %s\n",
63+ shn_abs ? "absolute" : "relative",
64 rel_type(r_type), symname);
65 }
66 }
67--
681.7.9.5
69
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch
new file mode 100644
index 00000000..e05d5e0b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch
@@ -0,0 +1,33 @@
1From fcc41e2fb71499938dcbeef7614bb60e1d3be391 Mon Sep 17 00:00:00 2001
2From: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
3Date: Mon, 21 May 2012 20:51:24 +0300
4Subject: [PATCH 114/117] x86, relocs: Build clean fix
5
6commit b2d668da9307c4c163dd603d2bb3cadb10f9fd37 upstream.
7
8relocs was not cleaned up when "make clean" is issued. This
9patch fixes the issue.
10
11Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
12Link: http://lkml.kernel.org/r/1337622684-6834-1-git-send-email-jarkko.sakkinen@intel.com
13Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 arch/x86/Makefile | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/arch/x86/Makefile b/arch/x86/Makefile
20index 774fd16..03dbc7f5b 100644
21--- a/arch/x86/Makefile
22+++ b/arch/x86/Makefile
23@@ -183,6 +183,7 @@ archclean:
24 $(Q)rm -rf $(objtree)/arch/i386
25 $(Q)rm -rf $(objtree)/arch/x86_64
26 $(Q)$(MAKE) $(clean)=$(boot)
27+ $(Q)$(MAKE) $(clean)=arch/x86/tools
28
29 define archhelp
30 echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)'
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch
new file mode 100644
index 00000000..da90c195
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch
@@ -0,0 +1,73 @@
1From 4cef8ea9c2bb186461b7f50c806d2e1ecfb81ceb Mon Sep 17 00:00:00 2001
2From: "H. Peter Anvin" <hpa@zytor.com>
3Date: Wed, 23 May 2012 14:02:34 -0700
4Subject: [PATCH 115/117] x86-32, relocs: Whitelist more symbols for ld bug
5 workaround
6
7commit fd952815307f0f272bf49fd364a7fd2f9992bc42 upstream.
8
9As noted in checkin:
10
11a3e854d95 x86, relocs: Workaround for binutils 2.22.52.0.1 section bug
12
13ld version 2.22.52.0.[12] can incorrectly promote relative symbols to
14absolute, if the output section they appear in is otherwise empty.
15
16Since checkin:
17
186520fe55 x86, realmode: 16-bit real-mode code support for relocs tool
19
20we actually check for this and error out rather than silently creating
21a kernel which will malfunction if relocated.
22
23Ingo found a configuration in which __start_builtin_fw triggered the
24warning.
25
26Go through the linker script sources and look for more symbols that
27could plausibly get bogusly promoted to absolute, and add them to the
28whitelist.
29
30In general, if the following error triggers:
31
32 Invalid absolute R_386_32 relocation: <symbol>
33
34... then we should verify that <symbol> is really meant to be
35relocated, and add it and any related symbols manually to the S_REL
36regexp.
37
38Please note that 6520fe55 does not introduce the error, only the check
39for the error -- without 6520fe55 this version of ld will simply
40produce a corrupt kernel if CONFIG_RELOCATABLE is set on x86-32.
41
42Reported-by: Ingo Molnar <mingo@kernel.org>
43Signed-off-by: H. Peter Anvin <hpa@zytor.com>
44Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
45---
46 arch/x86/tools/relocs.c | 11 +++++++++++
47 1 file changed, 11 insertions(+)
48
49diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
50index c075507..eb1ad63 100644
51--- a/arch/x86/tools/relocs.c
52+++ b/arch/x86/tools/relocs.c
53@@ -59,6 +59,17 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
54 "__x86_cpu_dev_(start|end)|"
55 "(__parainstructions|__alt_instructions)(|_end)|"
56 "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
57+ "__(start|end)_pci_.*|"
58+ "__(start|end)_builtin_fw|"
59+ "__(start|stop)___ksymtab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
60+ "__(start|stop)___kcrctab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
61+ "__(start|stop)___param|"
62+ "__(start|stop)___modver|"
63+ "__(start|stop)___bug_table|"
64+ "__tracedata_(start|end)|"
65+ "__(start|stop)_notes|"
66+ "__end_rodata|"
67+ "__initramfs_start|"
68 "_end)$"
69 };
70
71--
721.7.9.5
73
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch
new file mode 100644
index 00000000..ad47cacd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch
@@ -0,0 +1,42 @@
1From 31885c2e45d56acc14aff8d0fafe4b0bee3be940 Mon Sep 17 00:00:00 2001
2From: "H. Peter Anvin" <hpa@zytor.com>
3Date: Thu, 24 May 2012 07:01:38 -0700
4Subject: [PATCH 116/117] x86, relocs: Add jiffies and jiffies_64 to the
5 relative whitelist
6
7commit ea17e7414bc62e8d3bde8d08e3df1d921c518c17 upstream.
8
9The symbol jiffies is created in the linker script as an alias to
10jiffies_64. Unfortunately this is done outside any section, and
11apparently GNU ld 2.21 doesn't carry the section with it, so we end up
12with an absolute symbol and therefore a broken kernel.
13
14Add jiffies and jiffies_64 to the whitelist.
15
16The most disturbing bit with this discovery is that it shows that we
17have had multiple linker bugs in this area crossing multiple
18generations, and have been silently building bad kernels for some time.
19
20Link: http://lkml.kernel.org/r/20120524171604.0d98284f3affc643e9714470@canb.auug.org.au
21Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
22Signed-off-by: H. Peter Anvin <hpa@zytor.com>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 arch/x86/tools/relocs.c | 1 +
26 1 file changed, 1 insertion(+)
27
28diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
29index eb1ad63..e529730 100644
30--- a/arch/x86/tools/relocs.c
31+++ b/arch/x86/tools/relocs.c
32@@ -70,6 +70,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
33 "__(start|stop)_notes|"
34 "__end_rodata|"
35 "__initramfs_start|"
36+ "(jiffies|jiffies_64)|"
37 "_end)$"
38 };
39
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch
new file mode 100644
index 00000000..e71638ba
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch
@@ -0,0 +1,24 @@
1From 6ffcfc07eaa7389cee6c647a604b444e3b890a21 Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Thu, 31 May 2012 00:44:12 +0100
4Subject: [PATCH 117/117] Linux 3.2.19
5
6---
7 Makefile | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/Makefile b/Makefile
11index 0226da5..c291184 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 18
18+SUBLEVEL = 19
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.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch
index 733bacd0..ed10e3a9 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch
@@ -1,7 +1,7 @@
1From 47779e5a9fdb39f5cbe51d214a548c2c877d82c0 Mon Sep 17 00:00:00 2001 1From 8ca3e7c57df66813802542ce347e79ba5537f303 Mon Sep 17 00:00:00 2001
2From: Roman Tereshonkov <roman.tereshonkov@nokia.com> 2From: Roman Tereshonkov <roman.tereshonkov@nokia.com>
3Date: Tue, 29 Nov 2011 12:49:18 +0200 3Date: Tue, 29 Nov 2011 12:49:18 +0200
4Subject: [PATCH 001/130] mtdoops: fix the oops_page_used array size 4Subject: [PATCH 001/129] mtdoops: fix the oops_page_used array size
5 5
6commit 556f063580db2953a7e53cd46b47724246320f60 upstream. 6commit 556f063580db2953a7e53cd46b47724246320f60 upstream.
7 7
@@ -35,5 +35,5 @@ index 1e2fa62..0782b31 100644
35 printk(KERN_ERR "mtdoops: could not allocate page array\n"); 35 printk(KERN_ERR "mtdoops: could not allocate page array\n");
36 return; 36 return;
37-- 37--
381.7.9.4 381.7.9.5
39 39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch
index 669ebc41..3933c59d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch
@@ -1,7 +1,7 @@
1From 485b51057dd6e8de3541b41d9369a2791889ac65 Mon Sep 17 00:00:00 2001 1From bfaedde2c4ae9dcab0aabf7dc7172999df5669ec Mon Sep 17 00:00:00 2001
2From: Roman Tereshonkov <roman.tereshonkov@nokia.com> 2From: Roman Tereshonkov <roman.tereshonkov@nokia.com>
3Date: Fri, 2 Dec 2011 15:07:17 +0200 3Date: Fri, 2 Dec 2011 15:07:17 +0200
4Subject: [PATCH 002/130] mtd: mtdoops: skip reading initially bad blocks 4Subject: [PATCH 002/129] mtd: mtdoops: skip reading initially bad blocks
5 5
6commit 3538c56329936c78f7d356889908790006d0124c upstream. 6commit 3538c56329936c78f7d356889908790006d0124c upstream.
7 7
@@ -32,5 +32,5 @@ index 0782b31..f3cdce9 100644
32 mark_page_used(cxt, page); 32 mark_page_used(cxt, page);
33 ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, 33 ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE,
34-- 34--
351.7.9.4 351.7.9.5
36 36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch
index 27b74872..11ea5834 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch
@@ -1,7 +1,7 @@
1From 9e050cc5ce9a3890b8bcd2ec63b81921719cba83 Mon Sep 17 00:00:00 2001 1From 1e5cac540c54d687fea366251cc0ddf9266c0685 Mon Sep 17 00:00:00 2001
2From: Brian Norris <computersforpeace@gmail.com> 2From: Brian Norris <computersforpeace@gmail.com>
3Date: Mon, 7 Nov 2011 15:51:05 -0800 3Date: Mon, 7 Nov 2011 15:51:05 -0800
4Subject: [PATCH 003/130] mtd: mtd_blkdevs: don't increase 'open' count on 4Subject: [PATCH 003/129] mtd: mtd_blkdevs: don't increase 'open' count on
5 error path 5 error path
6 6
7commit 342ff28f5a2e5aa3236617bd2bddf6c749677ef2 upstream. 7commit 342ff28f5a2e5aa3236617bd2bddf6c749677ef2 upstream.
@@ -81,5 +81,5 @@ index ed8b5e7..424ca5f 100644
81 blktrans_dev_put(dev); 81 blktrans_dev_put(dev);
82 return ret; 82 return ret;
83-- 83--
841.7.9.4 841.7.9.5
85 85
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch
index a205a864..6a4a0e05 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch
@@ -1,7 +1,7 @@
1From 8d9f0b4614ddd61c2dc00c8de8865d75c1226860 Mon Sep 17 00:00:00 2001 1From 401f9918c9daf754c70eb65a895c8ef3bde5b441 Mon Sep 17 00:00:00 2001
2From: Wolfram Sang <w.sang@pengutronix.de> 2From: Wolfram Sang <w.sang@pengutronix.de>
3Date: Tue, 29 Nov 2011 15:34:08 +0100 3Date: Tue, 29 Nov 2011 15:34:08 +0100
4Subject: [PATCH 004/130] mtd: tests: stresstest: bail out if device has not 4Subject: [PATCH 004/129] mtd: tests: stresstest: bail out if device has not
5 enough eraseblocks 5 enough eraseblocks
6 6
7commit 2f4478ccff7df845dc9c0f8996a96373122c4417 upstream. 7commit 2f4478ccff7df845dc9c0f8996a96373122c4417 upstream.
@@ -56,5 +56,5 @@ index 52ffd91..811642f 100644
56 if (err) 56 if (err)
57 printk(PRINT_PREF "error %d occurred\n", err); 57 printk(PRINT_PREF "error %d occurred\n", err);
58-- 58--
591.7.9.4 591.7.9.5
60 60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch
index 5363d48c..26ba973b 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch
@@ -1,7 +1,7 @@
1From ad9ec9a5123245692aeb7027beffcb35eeeb5bde Mon Sep 17 00:00:00 2001 1From 4795aa3e23be426bc3971ce821f37983dcee409f Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk> 2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Tue, 10 Jan 2012 15:11:02 -0800 3Date: Tue, 10 Jan 2012 15:11:02 -0800
4Subject: [PATCH 005/130] drivers/rtc/interface.c: fix alarm rollover when day 4Subject: [PATCH 005/129] drivers/rtc/interface.c: fix alarm rollover when day
5 or month is out-of-range 5 or month is out-of-range
6 6
7commit e74a8f2edb92cb690b467cea0ab652c509e9f624 upstream. 7commit e74a8f2edb92cb690b467cea0ab652c509e9f624 upstream.
@@ -49,5 +49,5 @@ index 8e28625..8a1c031 100644
49 if (missing == none) 49 if (missing == none)
50 missing = month; 50 missing = month;
51-- 51--
521.7.9.4 521.7.9.5
53 53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch
index d4bac4ef..31d7359c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch
@@ -1,7 +1,7 @@
1From e67a0d3a73760b3c5eb0a93784a6f690b8dcf766 Mon Sep 17 00:00:00 2001 1From e6f3a0306b95afbc5965b42a05d85c102401b48c Mon Sep 17 00:00:00 2001
2From: Djalal Harouni <tixxdz@opendz.org> 2From: Djalal Harouni <tixxdz@opendz.org>
3Date: Wed, 4 Jan 2012 17:09:52 -0500 3Date: Wed, 4 Jan 2012 17:09:52 -0500
4Subject: [PATCH 006/130] ext4: add missing ext4_resize_end on error paths 4Subject: [PATCH 006/129] ext4: add missing ext4_resize_end on error paths
5 5
6commit 014a1770371a028d22f364718c805f4216911ecd upstream. 6commit 014a1770371a028d22f364718c805f4216911ecd upstream.
7 7
@@ -105,5 +105,5 @@ index a567968..ab25f57 100644
105 } 105 }
106 106
107-- 107--
1081.7.9.4 1081.7.9.5
109 109
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch
index e4f98614..8d8449f9 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch
@@ -1,7 +1,7 @@
1From 448f3344b91e15d4f94a9e687bd95157c5dcc7e2 Mon Sep 17 00:00:00 2001 1From 7105c77677c92d13510d38fd5dd085944464015e Mon Sep 17 00:00:00 2001
2From: Xi Wang <xi.wang@gmail.com> 2From: Xi Wang <xi.wang@gmail.com>
3Date: Tue, 10 Jan 2012 11:51:10 -0500 3Date: Tue, 10 Jan 2012 11:51:10 -0500
4Subject: [PATCH 007/130] ext4: fix undefined behavior in 4Subject: [PATCH 007/129] ext4: fix undefined behavior in
5 ext4_fill_flex_info() 5 ext4_fill_flex_info()
6 6
7commit d50f2ab6f050311dbf7b8f5501b25f0bf64a439b upstream. 7commit d50f2ab6f050311dbf7b8f5501b25f0bf64a439b upstream.
@@ -70,5 +70,5 @@ index 3e1329e..9281dbe 100644
70 /* We allocate both existing and potentially added groups */ 70 /* We allocate both existing and potentially added groups */
71 flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) + 71 flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) +
72-- 72--
731.7.9.4 731.7.9.5
74 74
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch
index a4ada732..bf1692bc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch
@@ -1,7 +1,7 @@
1From 60bad6c7d409471b8e5dc3febe12a48a98ee1e98 Mon Sep 17 00:00:00 2001 1From 14f05d5692c7431710f71ea914ad07dc0b60d2a2 Mon Sep 17 00:00:00 2001
2From: Karsten Wiese <fzu@wemgehoertderstaat.de> 2From: Karsten Wiese <fzu@wemgehoertderstaat.de>
3Date: Fri, 30 Dec 2011 01:42:01 +0100 3Date: Fri, 30 Dec 2011 01:42:01 +0100
4Subject: [PATCH 008/130] ALSA: snd-usb-us122l: Delete calls to 4Subject: [PATCH 008/129] ALSA: snd-usb-us122l: Delete calls to
5 preempt_disable 5 preempt_disable
6 6
7commit d0f3a2eb9062560bebca8b923424f3ca02a331ba upstream. 7commit d0f3a2eb9062560bebca8b923424f3ca02a331ba upstream.
@@ -50,5 +50,5 @@ index c400ade..1e7a47a 100644
50 snd_printd(KERN_DEBUG 50 snd_printd(KERN_DEBUG
51 "u[%i] start_frames differ in:%u out:%u\n", 51 "u[%i] start_frames differ in:%u out:%u\n",
52-- 52--
531.7.9.4 531.7.9.5
54 54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch
index ad1cc60b..17e9a30f 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch
@@ -1,7 +1,7 @@
1From b619b7c91e4294d2be0c1f5a61f068bb759bcce2 Mon Sep 17 00:00:00 2001 1From 78e0e9b19b4202874115f3a2745dad208dad51e2 Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com> 2From: David Henningsson <david.henningsson@canonical.com>
3Date: Mon, 2 Jan 2012 12:40:15 +0100 3Date: Mon, 2 Jan 2012 12:40:15 +0100
4Subject: [PATCH 009/130] ALSA: HDA: Fix master control for Cirrus Logic 421X 4Subject: [PATCH 009/129] ALSA: HDA: Fix master control for Cirrus Logic 421X
5 5
6commit 40d03e63e91af8ddccdfd5a536cc2a6e51433e1d upstream. 6commit 40d03e63e91af8ddccdfd5a536cc2a6e51433e1d upstream.
7 7
@@ -53,5 +53,5 @@ index 70a7abd..f55ceb6 100644
53 if (cfg->speaker_outs) { 53 if (cfg->speaker_outs) {
54 err = snd_hda_ctl_add(codec, 0, 54 err = snd_hda_ctl_add(codec, 0,
55-- 55--
561.7.9.4 561.7.9.5
57 57
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch
index d0dde2c0..4d0d47a7 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch
@@ -1,7 +1,7 @@
1From 80e0a3cf0ce88d6e335dc18017e1733e11361c22 Mon Sep 17 00:00:00 2001 1From d16d6a4af51d31f0b7a1a0109c99fd926416cd1f Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com> 2From: David Henningsson <david.henningsson@canonical.com>
3Date: Mon, 2 Jan 2012 12:40:16 +0100 3Date: Mon, 2 Jan 2012 12:40:16 +0100
4Subject: [PATCH 010/130] ALSA: HDA: Fix automute for Cirrus Logic 421x 4Subject: [PATCH 010/129] ALSA: HDA: Fix automute for Cirrus Logic 421x
5 5
6commit 78e2a928e377d5124932d4399c6c581908b027a0 upstream. 6commit 78e2a928e377d5124932d4399c6c581908b027a0 upstream.
7 7
@@ -44,5 +44,5 @@ index f55ceb6..5b0a9bb 100644
44 if (spec->gpio_eapd_hp) { 44 if (spec->gpio_eapd_hp) {
45 unsigned int gpio = hp_present ? 45 unsigned int gpio = hp_present ?
46-- 46--
471.7.9.4 471.7.9.5
48 48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch
index 248dca3c..4187528a 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch
@@ -1,7 +1,7 @@
1From e6eeafa7a6932f54162e6412135d5ff6e3aabe9b Mon Sep 17 00:00:00 2001 1From 97a18462c03b9c0c3e22aaec73045024f198aacc Mon Sep 17 00:00:00 2001
2From: Pavel Hofman <pavel.hofman@ivitera.com> 2From: Pavel Hofman <pavel.hofman@ivitera.com>
3Date: Thu, 5 Jan 2012 23:05:18 +0100 3Date: Thu, 5 Jan 2012 23:05:18 +0100
4Subject: [PATCH 011/130] ALSA: ice1724 - Check for ac97 to avoid kernel oops 4Subject: [PATCH 011/129] ALSA: ice1724 - Check for ac97 to avoid kernel oops
5 5
6commit e7848163aa2a649d9065f230fadff80dc3519775 upstream. 6commit e7848163aa2a649d9065f230fadff80dc3519775 upstream.
7 7
@@ -34,5 +34,5 @@ index e328cfb..e525da2 100644
34 } 34 }
35 35
36-- 36--
371.7.9.4 371.7.9.5
38 38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch
index 7c269c0f..1fe6016a 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch
@@ -1,7 +1,7 @@
1From 36a7bfaea157421f78e92f5ef8ccecb961cb6f35 Mon Sep 17 00:00:00 2001 1From fc0b965ed3b89f9f6cacff2dcd472f473b82ed99 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de> 2From: Takashi Iwai <tiwai@suse.de>
3Date: Mon, 9 Jan 2012 11:37:20 +0100 3Date: Mon, 9 Jan 2012 11:37:20 +0100
4Subject: [PATCH 012/130] ALSA: usb-audio - Avoid flood of frame-active debug 4Subject: [PATCH 012/129] ALSA: usb-audio - Avoid flood of frame-active debug
5 messages 5 messages
6 6
7commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream. 7commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream.
@@ -42,5 +42,5 @@ index 81c6ede..08dcce5 100644
42 } 42 }
43 bytes = urb->iso_frame_desc[i].actual_length; 43 bytes = urb->iso_frame_desc[i].actual_length;
44-- 44--
451.7.9.4 451.7.9.5
46 46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch
index d63ca079..5ab9509c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch
@@ -1,7 +1,7 @@
1From 04e2d5556696dd62a2573c478118e7c4bedc9fba Mon Sep 17 00:00:00 2001 1From 0f951c7e3066c834b47172ee36435129c7c1d978 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de> 2From: Takashi Iwai <tiwai@suse.de>
3Date: Tue, 10 Jan 2012 08:59:56 +0100 3Date: Tue, 10 Jan 2012 08:59:56 +0100
4Subject: [PATCH 013/130] ALSA: hda - Use auto-parser for HP laptops with 4Subject: [PATCH 013/129] ALSA: hda - Use auto-parser for HP laptops with
5 cx20459 codec 5 cx20459 codec
6 6
7commit de4da59e480cdf1075b33dbaf8078fc87bc52241 upstream. 7commit de4da59e480cdf1075b33dbaf8078fc87bc52241 upstream.
@@ -33,5 +33,5 @@ index 0de2119..7072251 100644
33 SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ), 33 SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ),
34 SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE), 34 SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE),
35-- 35--
361.7.9.4 361.7.9.5
37 37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch
index f3aedb31..52789054 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch
@@ -1,7 +1,7 @@
1From b0b4fe32da41718cd4989aa2c29bc0e8806d3d6f Mon Sep 17 00:00:00 2001 1From 244e54a801fd96fbe05447599832c9eb110debeb Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de> 2From: Takashi Iwai <tiwai@suse.de>
3Date: Tue, 10 Jan 2012 12:41:22 +0100 3Date: Tue, 10 Jan 2012 12:41:22 +0100
4Subject: [PATCH 014/130] ALSA: hda - Return the error from get_wcaps_type() 4Subject: [PATCH 014/129] ALSA: hda - Return the error from get_wcaps_type()
5 for invalid NIDs 5 for invalid NIDs
6 6
7commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream. 7commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream.
@@ -54,5 +54,5 @@ index 2c981b5..254ab52 100644
54 if (names[wid_value]) 54 if (names[wid_value])
55 return names[wid_value]; 55 return names[wid_value];
56-- 56--
571.7.9.4 571.7.9.5
58 58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch
index b80cfc2d..5284246e 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch
@@ -1,7 +1,7 @@
1From 1bbf40a55f2df6d045b872384e8b7de72bce4c63 Mon Sep 17 00:00:00 2001 1From cf6e92f0c3bbf4cdbd62a8838b9b8f2153d9607a Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de> 2From: Takashi Iwai <tiwai@suse.de>
3Date: Tue, 10 Jan 2012 15:16:02 +0100 3Date: Tue, 10 Jan 2012 15:16:02 +0100
4Subject: [PATCH 015/130] ALSA: hda - Fix the detection of "Loopback Mixing" 4Subject: [PATCH 015/129] ALSA: hda - Fix the detection of "Loopback Mixing"
5 control for VIA codecs 5 control for VIA codecs
6 6
7commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream. 7commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream.
@@ -38,5 +38,5 @@ index b513762..8d69e59 100644
38 if (!via_clone_control(spec, &via_aamix_ctl_enum)) 38 if (!via_clone_control(spec, &via_aamix_ctl_enum))
39 return -ENOMEM; 39 return -ENOMEM;
40-- 40--
411.7.9.4 411.7.9.5
42 42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch
index 3c6db917..457ebc2c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch
@@ -1,7 +1,7 @@
1From 6b60ca2b5f516c2ccb9e8b9bb6044f911f8707b3 Mon Sep 17 00:00:00 2001 1From 2fb2fe7e67d82706d84fdcf8876c28958c69998b Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de> 2From: Takashi Iwai <tiwai@suse.de>
3Date: Wed, 11 Jan 2012 12:34:11 +0100 3Date: Wed, 11 Jan 2012 12:34:11 +0100
4Subject: [PATCH 016/130] ALSA: hda - Fix the lost power-setup of seconary 4Subject: [PATCH 016/129] ALSA: hda - Fix the lost power-setup of seconary
5 pins after PM resume 5 pins after PM resume
6 6
7commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33 upstream. 7commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33 upstream.
@@ -88,5 +88,5 @@ index 616678f..a87b260 100644
88 } 88 }
89 89
90-- 90--
911.7.9.4 911.7.9.5
92 92
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch
index 316cb506..f39bef50 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch
@@ -1,7 +1,7 @@
1From c57372d1bf1128cd5d5c6371bdc53470ff00d10d Mon Sep 17 00:00:00 2001 1From 27ce68d3d7c9f0815bb269da0495aa675eebf846 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> 2From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
3Date: Fri, 23 Dec 2011 20:32:18 +0100 3Date: Fri, 23 Dec 2011 20:32:18 +0100
4Subject: [PATCH 017/130] drm/radeon/kms: workaround invalid AVI infoframe 4Subject: [PATCH 017/129] drm/radeon/kms: workaround invalid AVI infoframe
5 checksum issue 5 checksum issue
6MIME-Version: 1.0 6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8 7Content-Type: text/plain; charset=UTF-8
@@ -39,5 +39,5 @@ index f5ac7e7..c45d921 100644
39 WREG32(offset+R600_HDMI_VIDEOINFOFRAME_0, 39 WREG32(offset+R600_HDMI_VIDEOINFOFRAME_0,
40 frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24)); 40 frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24));
41-- 41--
421.7.9.4 421.7.9.5
43 43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch
index d6608b93..8eb632dd 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch
@@ -1,7 +1,7 @@
1From f021f7ff80f10b57d44b122e655a8b8b32de0391 Mon Sep 17 00:00:00 2001 1From 4080c93fb98e70e64d31c2ab2bd036a940c0807b Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com> 2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Tue, 3 Jan 2012 09:48:38 -0500 3Date: Tue, 3 Jan 2012 09:48:38 -0500
4Subject: [PATCH 018/130] drm/radeon/kms: disable writeback on pre-R300 asics 4Subject: [PATCH 018/129] drm/radeon/kms: disable writeback on pre-R300 asics
5 5
6commit 28eebb703e28bc455ba704adb1026f76649b768c upstream. 6commit 28eebb703e28bc455ba704adb1026f76649b768c upstream.
7 7
@@ -36,5 +36,5 @@ index c4d00a1..9b39145 100644
36 } else { 36 } else {
37 rdev->wb.enabled = true; 37 rdev->wb.enabled = true;
38-- 38--
391.7.9.4 391.7.9.5
40 40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch
index 7424646b..64a0b207 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch
@@ -1,7 +1,7 @@
1From 8eb079554654f8de6153fa79f38b2cafcaaa6843 Mon Sep 17 00:00:00 2001 1From 73267cb0dea18d38a023f20c110e79b742c030c9 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> 2From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
3Date: Thu, 5 Jan 2012 18:42:17 +0100 3Date: Thu, 5 Jan 2012 18:42:17 +0100
4Subject: [PATCH 019/130] radeon: Fix disabling PCI bus mastering on big 4Subject: [PATCH 019/129] radeon: Fix disabling PCI bus mastering on big
5 endian hosts. 5 endian hosts.
6MIME-Version: 1.0 6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8 7Content-Type: text/plain; charset=UTF-8
@@ -66,5 +66,5 @@ index b1053d6..c259e21 100644
66 mdelay(1); 66 mdelay(1);
67 } 67 }
68-- 68--
691.7.9.4 691.7.9.5
70 70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch
index 7b37b615..68ba0561 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch
@@ -1,7 +1,7 @@
1From 10d32d7599943b0209facd8ac9d12ce5024225d2 Mon Sep 17 00:00:00 2001 1From 873440a8680a5cf108ce5372f065fec762b7f73c Mon Sep 17 00:00:00 2001
2From: Boaz Harrosh <bharrosh@panasas.com> 2From: Boaz Harrosh <bharrosh@panasas.com>
3Date: Fri, 6 Jan 2012 09:28:12 +0200 3Date: Fri, 6 Jan 2012 09:28:12 +0200
4Subject: [PATCH 020/130] pnfs-obj: pNFS errors are communicated on 4Subject: [PATCH 020/129] pnfs-obj: pNFS errors are communicated on
5 iodata->pnfs_error 5 iodata->pnfs_error
6 6
7commit 5c0b4129c07b902b27d3f3ebc087757f534a3abd upstream. 7commit 5c0b4129c07b902b27d3f3ebc087757f534a3abd upstream.
@@ -46,5 +46,5 @@ index 72074e3..b3c2903 100644
46 objlayout_iodone(oir); 46 objlayout_iodone(oir);
47 /* must not use oir after this point */ 47 /* must not use oir after this point */
48-- 48--
491.7.9.4 491.7.9.5
50 50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch
index 38e28ee2..b05bc19e 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch
@@ -1,7 +1,7 @@
1From 26cc5985abb44928985dd7def7aace0f33b29644 Mon Sep 17 00:00:00 2001 1From e20497d523b9954e6fe3a3cd333d1286e3c241ed Mon Sep 17 00:00:00 2001
2From: Boaz Harrosh <bharrosh@panasas.com> 2From: Boaz Harrosh <bharrosh@panasas.com>
3Date: Fri, 6 Jan 2012 09:31:20 +0200 3Date: Fri, 6 Jan 2012 09:31:20 +0200
4Subject: [PATCH 021/130] pnfs-obj: Must return layout on IO error 4Subject: [PATCH 021/129] pnfs-obj: Must return layout on IO error
5 5
6commit fe0fe83585f88346557868a803a479dfaaa0688a upstream. 6commit fe0fe83585f88346557868a803a479dfaaa0688a upstream.
7 7
@@ -88,5 +88,5 @@ index 1509530..53d593a 100644
88 88
89 struct nfs4_deviceid_node; 89 struct nfs4_deviceid_node;
90-- 90--
911.7.9.4 911.7.9.5
92 92
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch
index 80051a83..ceac5a90 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch
@@ -1,7 +1,7 @@
1From f55f86c3cb2a10b64e696c740b7945d8669d0d46 Mon Sep 17 00:00:00 2001 1From 51a699a0c53b199599fe16688248143ee98a167e Mon Sep 17 00:00:00 2001
2From: Chuck Lever <chuck.lever@oracle.com> 2From: Chuck Lever <chuck.lever@oracle.com>
3Date: Mon, 5 Dec 2011 15:40:30 -0500 3Date: Mon, 5 Dec 2011 15:40:30 -0500
4Subject: [PATCH 022/130] NFS: Retry mounting NFSROOT 4Subject: [PATCH 022/129] NFS: Retry mounting NFSROOT
5 5
6commit 43717c7daebf10b43f12e68512484b3095bb1ba5 upstream. 6commit 43717c7daebf10b43f12e68512484b3095bb1ba5 upstream.
7 7
@@ -90,5 +90,5 @@ index 0f6e1d9..db6e5ee 100644
90 #endif 90 #endif
91 91
92-- 92--
931.7.9.4 931.7.9.5
94 94
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch
index 17062e04..34ea494a 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch
@@ -1,7 +1,7 @@
1From ae6644f8572872abad3082d4ecf29fa7c48f20d5 Mon Sep 17 00:00:00 2001 1From 4d12390d5a9b1c151416e0fbef4702455f4a2626 Mon Sep 17 00:00:00 2001
2From: Andy Adamson <andros@netapp.com> 2From: Andy Adamson <andros@netapp.com>
3Date: Wed, 9 Nov 2011 13:58:20 -0500 3Date: Wed, 9 Nov 2011 13:58:20 -0500
4Subject: [PATCH 023/130] NFSv4.1: fix backchannel slotid off-by-one bug 4Subject: [PATCH 023/129] NFSv4.1: fix backchannel slotid off-by-one bug
5 5
6commit 61f2e5106582d02f30b6807e3f9c07463c572ccb upstream. 6commit 61f2e5106582d02f30b6807e3f9c07463c572ccb upstream.
7 7
@@ -26,5 +26,5 @@ index 43926ad..54cea8a 100644
26 26
27 slot = tbl->slots + args->csa_slotid; 27 slot = tbl->slots + args->csa_slotid;
28-- 28--
291.7.9.4 291.7.9.5
30 30
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch
index 7ac8cca3..70d96b31 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch
@@ -1,7 +1,7 @@
1From 7738b871ed07b550480b1b26d7bb6349f54c3d55 Mon Sep 17 00:00:00 2001 1From 7aab7b372a174e80233a74ff10d55ded1ea28c2f Mon Sep 17 00:00:00 2001
2From: NeilBrown <neilb@suse.de> 2From: NeilBrown <neilb@suse.de>
3Date: Wed, 16 Nov 2011 11:46:31 +1100 3Date: Wed, 16 Nov 2011 11:46:31 +1100
4Subject: [PATCH 024/130] NFS - fix recent breakage to NFS error handling. 4Subject: [PATCH 024/129] NFS - fix recent breakage to NFS error handling.
5 5
6commit 2edb6bc3852c681c0d948245bd55108dc6407604 upstream. 6commit 2edb6bc3852c681c0d948245bd55108dc6407604 upstream.
7 7
@@ -56,5 +56,5 @@ index 606ef0f..c43a452 100644
56 if (have_error) 56 if (have_error)
57 ret = xchg(&ctx->error, 0); 57 ret = xchg(&ctx->error, 0);
58-- 58--
591.7.9.4 591.7.9.5
60 60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch
index 208b0a75..f57d7326 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch
@@ -1,7 +1,7 @@
1From 02df7d0ce33039c06e2be9a446ed816f3d9c9177 Mon Sep 17 00:00:00 2001 1From 0ae2afe3f515d5e56beeefa0f0e5fd23cb358f4a Mon Sep 17 00:00:00 2001
2From: Andy Adamson <andros@netapp.com> 2From: Andy Adamson <andros@netapp.com>
3Date: Wed, 7 Dec 2011 11:55:27 -0500 3Date: Wed, 7 Dec 2011 11:55:27 -0500
4Subject: [PATCH 025/130] NFSv4: include bitmap in nfsv4 get acl data 4Subject: [PATCH 025/129] NFSv4: include bitmap in nfsv4 get acl data
5 5
6commit bf118a342f10dafe44b14451a1392c3254629a1f upstream. 6commit bf118a342f10dafe44b14451a1392c3254629a1f upstream.
7 7
@@ -309,5 +309,5 @@ index 277ebd4..593f4c6 100644
309 /* 309 /*
310 * xdr_shrink_bufhead 310 * xdr_shrink_bufhead
311-- 311--
3121.7.9.4 3121.7.9.5
313 313
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch
index 34d00b64..ccc04bdc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch
@@ -1,7 +1,7 @@
1From e89768f97b1d5faa0cb6335e46558f889320621e Mon Sep 17 00:00:00 2001 1From 116cbe8665b2a7fd6538b2d92e04f016317fee84 Mon Sep 17 00:00:00 2001
2From: Jeff Layton <jlayton@redhat.com> 2From: Jeff Layton <jlayton@redhat.com>
3Date: Tue, 20 Dec 2011 06:57:45 -0500 3Date: Tue, 20 Dec 2011 06:57:45 -0500
4Subject: [PATCH 026/130] nfs: fix regression in handling of context= option 4Subject: [PATCH 026/129] nfs: fix regression in handling of context= option
5 in NFSv4 5 in NFSv4
6 6
7commit 8a0d551a59ac92d8ff048d6cb29d3a02073e81e8 upstream. 7commit 8a0d551a59ac92d8ff048d6cb29d3a02073e81e8 upstream.
@@ -143,5 +143,5 @@ index 1347774..3ada13c 100644
143 error != 0 ? " [error]" : ""); 143 error != 0 ? " [error]" : "");
144 return res; 144 return res;
145-- 145--
1461.7.9.4 1461.7.9.5
147 147
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch
index 24664dcb..22df17c5 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch
@@ -1,7 +1,7 @@
1From b362c0e865aececc1f7e47a96ed390b4407e92e1 Mon Sep 17 00:00:00 2001 1From b475e4ad0950706030ae96b367c2dbb065a785be Mon Sep 17 00:00:00 2001
2From: Chase Douglas <chase.douglas@canonical.com> 2From: Chase Douglas <chase.douglas@canonical.com>
3Date: Mon, 7 Nov 2011 11:08:05 -0800 3Date: Mon, 7 Nov 2011 11:08:05 -0800
4Subject: [PATCH 027/130] HID: bump maximum global item tag report size to 96 4Subject: [PATCH 027/129] HID: bump maximum global item tag report size to 96
5 bytes 5 bytes
6 6
7commit e46e927b9b7e8d95526e69322855243882b7e1a3 upstream. 7commit e46e927b9b7e8d95526e69322855243882b7e1a3 upstream.
@@ -31,5 +31,5 @@ index af35384..1473067 100644
31 parser->global.report_size); 31 parser->global.report_size);
32 return -1; 32 return -1;
33-- 33--
341.7.9.4 341.7.9.5
35 35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch
index 6a825394..02166721 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch
@@ -1,7 +1,7 @@
1From 36ef51ce1bd874fab45b938646866fe76878d759 Mon Sep 17 00:00:00 2001 1From 2cfaf0fb0c2b2fb54ecae98d34df27d549a6e92c Mon Sep 17 00:00:00 2001
2From: David Herrmann <dh.herrmann@googlemail.com> 2From: David Herrmann <dh.herrmann@googlemail.com>
3Date: Wed, 7 Dec 2011 21:33:59 +0100 3Date: Wed, 7 Dec 2011 21:33:59 +0100
4Subject: [PATCH 028/130] HID: wiimote: Select INPUT_FF_MEMLESS 4Subject: [PATCH 028/129] HID: wiimote: Select INPUT_FF_MEMLESS
5 5
6commit ef6f41157f3864d9bf42671b2ed66062dcafb72e upstream. 6commit ef6f41157f3864d9bf42671b2ed66062dcafb72e upstream.
7 7
@@ -29,5 +29,5 @@ index 22a4a05..332c22a 100644
29 Support for the Nintendo Wii Remote bluetooth device. 29 Support for the Nintendo Wii Remote bluetooth device.
30 30
31-- 31--
321.7.9.4 321.7.9.5
33 33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch
index ffda65f7..75dbf575 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch
@@ -1,7 +1,7 @@
1From 7c9f37ae89d2e888e7be2c0b23b96765670bf00f Mon Sep 17 00:00:00 2001 1From 68ff23dc67132bf9668c4e7dab105f7d8a83937f Mon Sep 17 00:00:00 2001
2From: Bhavesh Parekh <bparekh@nvidia.com> 2From: Bhavesh Parekh <bparekh@nvidia.com>
3Date: Wed, 30 Nov 2011 17:43:42 +0530 3Date: Wed, 30 Nov 2011 17:43:42 +0530
4Subject: [PATCH 029/130] UBI: fix missing scrub when there is a bit-flip 4Subject: [PATCH 029/129] UBI: fix missing scrub when there is a bit-flip
5 5
6commit e801e128b2200c40a0ec236cf2330b2586b6e05a upstream. 6commit e801e128b2200c40a0ec236cf2330b2586b6e05a upstream.
7 7
@@ -77,5 +77,5 @@ index 42c684c..277c429 100644
77 err == MOVE_TARGET_RD_ERR) { 77 err == MOVE_TARGET_RD_ERR) {
78 /* 78 /*
79-- 79--
801.7.9.4 801.7.9.5
81 81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch
index c317d736..ee5d64cc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch
@@ -1,7 +1,7 @@
1From d28f4336976d7994bca4de5d2eb3a4b6cc003be8 Mon Sep 17 00:00:00 2001 1From 917c71669ddf01983d843f8fc19bbdc296748a9c Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> 2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Thu, 5 Jan 2012 10:47:18 +0200 3Date: Thu, 5 Jan 2012 10:47:18 +0200
4Subject: [PATCH 030/130] UBI: fix use-after-free on error path 4Subject: [PATCH 030/129] UBI: fix use-after-free on error path
5 5
6commit e57e0d8e818512047fe379157c3f77f1b9fabffb upstream. 6commit e57e0d8e818512047fe379157c3f77f1b9fabffb upstream.
7 7
@@ -48,5 +48,5 @@ index 277c429..0696e36 100644
48 /* It is %-EIO, the PEB went bad */ 48 /* It is %-EIO, the PEB went bad */
49 49
50-- 50--
511.7.9.4 511.7.9.5
52 52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch
index 7c925b75..ab3d2d47 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch
@@ -1,7 +1,7 @@
1From b55d48c7cec81071f13dc9e88a657b507573a4ec Mon Sep 17 00:00:00 2001 1From 9e38af95ee520c7c6ffa8b4fcc976a3437ef8103 Mon Sep 17 00:00:00 2001
2From: Alex Williamson <alex.williamson@redhat.com> 2From: Alex Williamson <alex.williamson@redhat.com>
3Date: Wed, 16 Nov 2011 09:24:16 -0700 3Date: Wed, 16 Nov 2011 09:24:16 -0700
4Subject: [PATCH 031/130] PCI: Fix PCI_EXP_TYPE_RC_EC value 4Subject: [PATCH 031/129] PCI: Fix PCI_EXP_TYPE_RC_EC value
5 5
6commit 1830ea91c20b06608f7cdb2455ce05ba834b3214 upstream. 6commit 1830ea91c20b06608f7cdb2455ce05ba834b3214 upstream.
7 7
@@ -28,5 +28,5 @@ index b5d9657..411c412 100644
28 #define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ 28 #define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
29 #define PCI_EXP_DEVCAP 4 /* Device capabilities */ 29 #define PCI_EXP_DEVCAP 4 /* Device capabilities */
30-- 30--
311.7.9.4 311.7.9.5
32 32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch
index 8525a50f..6da8ef88 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch
@@ -1,7 +1,7 @@
1From 5b5be8901badfd9baec5d13fec6be5c942f2bf71 Mon Sep 17 00:00:00 2001 1From 948a5d9ea80dfda0b40581e02217f30ffefd8e60 Mon Sep 17 00:00:00 2001
2From: "Eric W. Biederman" <ebiederm@xmission.com> 2From: "Eric W. Biederman" <ebiederm@xmission.com>
3Date: Mon, 17 Oct 2011 11:46:06 -0700 3Date: Mon, 17 Oct 2011 11:46:06 -0700
4Subject: [PATCH 032/130] PCI: msi: Disable msi interrupts when we initialize 4Subject: [PATCH 032/129] PCI: msi: Disable msi interrupts when we initialize
5 a pci device 5 a pci device
6 6
7commit a776c491ca5e38c26d9f66923ff574d041e747f4 upstream. 7commit a776c491ca5e38c26d9f66923ff574d041e747f4 upstream.
@@ -49,5 +49,5 @@ index 0e6d04d..e3efb43 100644
49+ msix_set_enable(dev, 0); 49+ msix_set_enable(dev, 0);
50 } 50 }
51-- 51--
521.7.9.4 521.7.9.5
53 53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch
index 9381af25..b7dc6e82 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch
@@ -1,7 +1,7 @@
1From 18329c64230886275000c9f9e4ff499d15ca7fb4 Mon Sep 17 00:00:00 2001 1From 08ba39eb25bcf540f859e7204c3307ee43b52eff Mon Sep 17 00:00:00 2001
2From: Gary Hade <garyhade@us.ibm.com> 2From: Gary Hade <garyhade@us.ibm.com>
3Date: Mon, 14 Nov 2011 15:42:16 -0800 3Date: Mon, 14 Nov 2011 15:42:16 -0800
4Subject: [PATCH 033/130] x86/PCI: Ignore CPU non-addressable _CRS reserved 4Subject: [PATCH 033/129] x86/PCI: Ignore CPU non-addressable _CRS reserved
5 memory resources 5 memory resources
6 6
7commit ae5cd86455381282ece162966183d3f208c6fad7 upstream. 7commit ae5cd86455381282ece162966183d3f208c6fad7 upstream.
@@ -61,5 +61,5 @@ index 404f21a..f8348ab 100644
61 res = &info->res[info->res_num]; 61 res = &info->res[info->res_num];
62 res->name = info->name; 62 res->name = info->name;
63-- 63--
641.7.9.4 641.7.9.5
65 65
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch
index 891c47ac..8d30b65d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch
@@ -1,7 +1,7 @@
1From 4d9bd6414c035d82f217aaee1cfa52079fdd7e0e Mon Sep 17 00:00:00 2001 1From 64525bdf1bbff67faf88ccd7bc83ef856489ed24 Mon Sep 17 00:00:00 2001
2From: Bjorn Helgaas <bhelgaas@google.com> 2From: Bjorn Helgaas <bhelgaas@google.com>
3Date: Thu, 5 Jan 2012 14:27:19 -0700 3Date: Thu, 5 Jan 2012 14:27:19 -0700
4Subject: [PATCH 034/130] x86/PCI: amd: factor out MMCONFIG discovery 4Subject: [PATCH 034/129] x86/PCI: amd: factor out MMCONFIG discovery
5 5
6commit 24d25dbfa63c376323096660bfa9ad45a08870ce upstream. 6commit 24d25dbfa63c376323096660bfa9ad45a08870ce upstream.
7 7
@@ -156,5 +156,5 @@ index 026e493..385a940 100644
156 156
157 /* mmio resource */ 157 /* mmio resource */
158-- 158--
1591.7.9.4 1591.7.9.5
160 160
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch
index 48b1c0ed..3fd79be1 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch
@@ -1,7 +1,7 @@
1From 388420a808ce95390d4555b15d22731d247a1a1e Mon Sep 17 00:00:00 2001 1From ab624504467af8cf207855de15bc8b835605ba88 Mon Sep 17 00:00:00 2001
2From: Bjorn Helgaas <bhelgaas@google.com> 2From: Bjorn Helgaas <bhelgaas@google.com>
3Date: Thu, 12 Jan 2012 08:01:40 -0700 3Date: Thu, 12 Jan 2012 08:01:40 -0700
4Subject: [PATCH 035/130] x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y 4Subject: [PATCH 035/129] x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y
5 5
6commit 5cf9a4e69c1ff0ccdd1d2b7404f95c0531355274 upstream. 6commit 5cf9a4e69c1ff0ccdd1d2b7404f95c0531355274 upstream.
7 7
@@ -33,5 +33,5 @@ index 6b8759f..d24d3da 100644
33 33
34 ifeq ($(CONFIG_PCI_DEBUG),y) 34 ifeq ($(CONFIG_PCI_DEBUG),y)
35-- 35--
361.7.9.4 361.7.9.5
37 37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch
index a00e4ad2..411ca8bc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch
@@ -1,7 +1,7 @@
1From 5e3db86029f0b96de1fdd1a320c93a0a48301371 Mon Sep 17 00:00:00 2001 1From b76617ff2fa38409d3065f944359e5e47b290014 Mon Sep 17 00:00:00 2001
2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> 2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com>
3Date: Thu, 1 Dec 2011 07:52:56 +0530 3Date: Thu, 1 Dec 2011 07:52:56 +0530
4Subject: [PATCH 036/130] SCSI: mpt2sas: Release spinlock for the raid device 4Subject: [PATCH 036/129] SCSI: mpt2sas: Release spinlock for the raid device
5 list before blocking it 5 list before blocking it
6 6
7commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream. 7commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream.
@@ -52,5 +52,5 @@ index d570573..3a4f666 100644
52 } 52 }
53 53
54-- 54--
551.7.9.4 551.7.9.5
56 56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch
index 53aaf44d..d58ff27f 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch
@@ -1,7 +1,7 @@
1From 9ebea3b971f454ee2d1c0970ac76636d2fa4f5a2 Mon Sep 17 00:00:00 2001 1From c987e1592482d819fd950fbaad9a1405f892c39e Mon Sep 17 00:00:00 2001
2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> 2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com>
3Date: Thu, 1 Dec 2011 07:53:08 +0530 3Date: Thu, 1 Dec 2011 07:53:08 +0530
4Subject: [PATCH 037/130] SCSI: mpt2sas : Fix for memory allocation error for 4Subject: [PATCH 037/129] SCSI: mpt2sas : Fix for memory allocation error for
5 large host credits 5 large host credits
6 6
7commit aff132d95ffe14eca96cab90597cdd010b457af7 upstream. 7commit aff132d95ffe14eca96cab90597cdd010b457af7 upstream.
@@ -173,5 +173,5 @@ index 3a4f666..9bc6fb2 100644
173 } 173 }
174 chain_req = list_entry(ioc->free_chain_list.next, 174 chain_req = list_entry(ioc->free_chain_list.next,
175-- 175--
1761.7.9.4 1761.7.9.5
177 177
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch
index 5e062932..ce8871b6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch
@@ -1,7 +1,7 @@
1From 5a9209c05e1082f2394f483b7326cbf0efeb2ed2 Mon Sep 17 00:00:00 2001 1From 60ff826ed445ff093db42fd2e5ac97839c3c43d4 Mon Sep 17 00:00:00 2001
2From: Ian Campbell <Ian.Campbell@citrix.com> 2From: Ian Campbell <Ian.Campbell@citrix.com>
3Date: Wed, 4 Jan 2012 09:34:49 +0000 3Date: Wed, 4 Jan 2012 09:34:49 +0000
4Subject: [PATCH 038/130] xen/xenbus: Reject replies with payload > 4Subject: [PATCH 038/129] xen/xenbus: Reject replies with payload >
5 XENSTORE_PAYLOAD_MAX. 5 XENSTORE_PAYLOAD_MAX.
6 6
7commit 9e7860cee18241633eddb36a4c34c7b61d8cecbc upstream. 7commit 9e7860cee18241633eddb36a4c34c7b61d8cecbc upstream.
@@ -74,5 +74,5 @@ index f6f07aa..7cdfca2 100644
74+ 74+
75 #endif /* _XS_WIRE_H */ 75 #endif /* _XS_WIRE_H */
76-- 76--
771.7.9.4 771.7.9.5
78 78
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch
index 9931fbeb..a6df9065 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch
@@ -1,7 +1,7 @@
1From 1a8506bc77390a1f7e67a4176c6d4c5b05a18920 Mon Sep 17 00:00:00 2001 1From 4f2bf4b7d712836951cdbfa4807ae0309711487c Mon Sep 17 00:00:00 2001
2From: NeilBrown <neilb@suse.de> 2From: NeilBrown <neilb@suse.de>
3Date: Mon, 9 Jan 2012 01:41:51 +1100 3Date: Mon, 9 Jan 2012 01:41:51 +1100
4Subject: [PATCH 039/130] md/raid1: perform bad-block tests for WriteMostly 4Subject: [PATCH 039/129] md/raid1: perform bad-block tests for WriteMostly
5 devices too. 5 devices too.
6MIME-Version: 1.0 6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8 7Content-Type: text/plain; charset=UTF-8
@@ -52,5 +52,5 @@ index ede2461..7d9e071 100644
52 } 52 }
53 /* This is a reasonable device to use. It might 53 /* This is a reasonable device to use. It might
54-- 54--
551.7.9.4 551.7.9.5
56 56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch
index 5237e81f..221f3df6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch
@@ -1,7 +1,7 @@
1From 20da29ae3a7382bd51c44de1e5f5e8220b9f21b0 Mon Sep 17 00:00:00 2001 1From 5800ae9277818c4ce77d7efd4a1035738ec40400 Mon Sep 17 00:00:00 2001
2From: Roberto Sassu <roberto.sassu@polito.it> 2From: Roberto Sassu <roberto.sassu@polito.it>
3Date: Mon, 19 Dec 2011 15:57:27 +0100 3Date: Mon, 19 Dec 2011 15:57:27 +0100
4Subject: [PATCH 040/130] ima: free duplicate measurement memory 4Subject: [PATCH 040/129] ima: free duplicate measurement memory
5 5
6commit 45fae7493970d7c45626ccd96d4a74f5f1eea5a9 upstream. 6commit 45fae7493970d7c45626ccd96d4a74f5f1eea5a9 upstream.
7 7
@@ -48,5 +48,5 @@ index 8e28f04..e1a5062 100644
48 } 48 }
49 } 49 }
50-- 50--
511.7.9.4 511.7.9.5
52 52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch
index de3d14ba..3f30fe21 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch
@@ -1,7 +1,7 @@
1From 52428cef38a83932b588b3ceff080a7411780dc9 Mon Sep 17 00:00:00 2001 1From 2c5908ebba650537dda1db47220afc062e7d61bd Mon Sep 17 00:00:00 2001
2From: Roberto Sassu <roberto.sassu@polito.it> 2From: Roberto Sassu <roberto.sassu@polito.it>
3Date: Mon, 19 Dec 2011 15:57:28 +0100 3Date: Mon, 19 Dec 2011 15:57:28 +0100
4Subject: [PATCH 041/130] ima: fix invalid memory reference 4Subject: [PATCH 041/129] ima: fix invalid memory reference
5 5
6commit 7b7e5916aa2f46e57f8bd8cb89c34620ebfda5da upstream. 6commit 7b7e5916aa2f46e57f8bd8cb89c34620ebfda5da upstream.
7 7
@@ -64,5 +64,5 @@ index e1a5062..55a6271 100644
64 } 64 }
65 out: 65 out:
66-- 66--
671.7.9.4 671.7.9.5
68 68
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch
index 1a2116f1..2af89dd8 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch
@@ -1,7 +1,7 @@
1From 7942ee2ec78601a85bc491a0b63dc2e45dfec3a6 Mon Sep 17 00:00:00 2001 1From 71490e8f6f58ec56533554888983ce09d6ee5cb1 Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <eric.dumazet@gmail.com> 2From: Eric Dumazet <eric.dumazet@gmail.com>
3Date: Tue, 13 Dec 2011 04:57:06 +0100 3Date: Tue, 13 Dec 2011 04:57:06 +0100
4Subject: [PATCH 042/130] slub: fix a possible memleak in __slab_alloc() 4Subject: [PATCH 042/129] slub: fix a possible memleak in __slab_alloc()
5 5
6commit 73736e0387ba0e6d2b703407b4d26168d31516a7 upstream. 6commit 73736e0387ba0e6d2b703407b4d26168d31516a7 upstream.
7 7
@@ -43,5 +43,5 @@ index ed3334d..1a919f0 100644
43 43
44 do { 44 do {
45-- 45--
461.7.9.4 461.7.9.5
47 47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch
index 0b3b1541..c8c5bd7a 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch
@@ -1,7 +1,7 @@
1From b984f94bf34a9df2d49b84ff3a723c968e8e8c35 Mon Sep 17 00:00:00 2001 1From ac901f18d34bc2bf1be5e6b56cf6eeb045c0bbee Mon Sep 17 00:00:00 2001
2From: Bjorn Helgaas <bhelgaas@google.com> 2From: Bjorn Helgaas <bhelgaas@google.com>
3Date: Thu, 5 Jan 2012 14:27:24 -0700 3Date: Thu, 5 Jan 2012 14:27:24 -0700
4Subject: [PATCH 043/130] PNP: work around Dell 1536/1546 BIOS MMCONFIG bug 4Subject: [PATCH 043/129] PNP: work around Dell 1536/1546 BIOS MMCONFIG bug
5 that breaks USB 5 that breaks USB
6 6
7commit eb31aae8cb5eb54e234ed2d857ddac868195d911 upstream. 7commit eb31aae8cb5eb54e234ed2d857ddac868195d911 upstream.
@@ -97,5 +97,5 @@ index dfbd5a6..258fef2 100644
97 }; 97 };
98 98
99-- 99--
1001.7.9.4 1001.7.9.5
101 101
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch
index 72134df1..ec9189d8 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch
@@ -1,7 +1,7 @@
1From f4da550957683d2b4f271d222e936a79866c6242 Mon Sep 17 00:00:00 2001 1From 45268a6d90150936994e8b3e21eb91a54586685e Mon Sep 17 00:00:00 2001
2From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 2From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
3Date: Tue, 10 Jan 2012 06:40:23 +0000 3Date: Tue, 10 Jan 2012 06:40:23 +0000
4Subject: [PATCH 044/130] asix: fix setting custom MAC address on Asix 88178 4Subject: [PATCH 044/129] asix: fix setting custom MAC address on Asix 88178
5 devices 5 devices
6 6
7commit 71bc5d94061516c4e70303570128797bcf768b10 upstream. 7commit 71bc5d94061516c4e70303570128797bcf768b10 upstream.
@@ -41,5 +41,5 @@ index dd2625a..b495821 100644
41 if (ret < 0) 41 if (ret < 0)
42 return ret; 42 return ret;
43-- 43--
441.7.9.4 441.7.9.5
45 45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch
index e4a46e52..b39ee830 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch
@@ -1,7 +1,7 @@
1From d36c9125fa5835e571dcd975e20833450ff04b4f Mon Sep 17 00:00:00 2001 1From fa83c408b16aae1d3d85868c528caf491e14af76 Mon Sep 17 00:00:00 2001
2From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> 2From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
3Date: Tue, 10 Jan 2012 06:40:17 +0000 3Date: Tue, 10 Jan 2012 06:40:17 +0000
4Subject: [PATCH 045/130] asix: fix setting custom MAC address on Asix 88772 4Subject: [PATCH 045/129] asix: fix setting custom MAC address on Asix 88772
5 devices 5 devices
6 6
7commit 8ef66bdc4bda6aac2dae73b84d79dc8c2db33637 upstream. 7commit 8ef66bdc4bda6aac2dae73b84d79dc8c2db33637 upstream.
@@ -49,5 +49,5 @@ index b495821..f5e063a 100644
49 ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL); 49 ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL);
50 if (ret < 0) 50 if (ret < 0)
51-- 51--
521.7.9.4 521.7.9.5
53 53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch
index dbc03e26..3fe1fc76 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch
@@ -1,7 +1,7 @@
1From 5a7217fdd8cbda3e7d44d33a51c077ab84e6437d Mon Sep 17 00:00:00 2001 1From a509baa477542eca7e6f6d8d23dc1ba04248a62f Mon Sep 17 00:00:00 2001
2From: Fabio Estevam <festevam@gmail.com> 2From: Fabio Estevam <festevam@gmail.com>
3Date: Thu, 12 Jan 2012 17:20:20 -0800 3Date: Thu, 12 Jan 2012 17:20:20 -0800
4Subject: [PATCH 046/130] include/linux/crash_dump.h needs elf.h 4Subject: [PATCH 046/129] include/linux/crash_dump.h needs elf.h
5 5
6commit 1f536b9e9f85456df93614b3c2f6a1a2b7d7cb9b upstream. 6commit 1f536b9e9f85456df93614b3c2f6a1a2b7d7cb9b upstream.
7 7
@@ -50,5 +50,5 @@ index 5c4abce..b936763 100644
50 #define ELFCORE_ADDR_MAX (-1ULL) 50 #define ELFCORE_ADDR_MAX (-1ULL)
51 #define ELFCORE_ADDR_ERR (-2ULL) 51 #define ELFCORE_ADDR_ERR (-2ULL)
52-- 52--
531.7.9.4 531.7.9.5
54 54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch
index c9702c64..083f876e 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch
@@ -1,7 +1,7 @@
1From ee971ad4b1a94e768465a27de0357ed71d7e2b97 Mon Sep 17 00:00:00 2001 1From b12320439e84a510f0043ea4b2540080c8bbb9a7 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net> 2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Wed, 4 Jan 2012 20:50:47 -0600 3Date: Wed, 4 Jan 2012 20:50:47 -0600
4Subject: [PATCH 047/130] rtl8192se: Fix BUG caused by failure to check skb 4Subject: [PATCH 047/129] rtl8192se: Fix BUG caused by failure to check skb
5 allocation 5 allocation
6 6
7commit d90db4b12bc1b9b8a787ef28550fdb767ee25a49 upstream. 7commit d90db4b12bc1b9b8a787ef28550fdb767ee25a49 upstream.
@@ -40,5 +40,5 @@ index 6f91a14..3fda6b1 100644
40 cb_desc->queue_index = TXCMD_QUEUE; 40 cb_desc->queue_index = TXCMD_QUEUE;
41 cb_desc->cmd_or_init = DESC_PACKET_TYPE_NORMAL; 41 cb_desc->cmd_or_init = DESC_PACKET_TYPE_NORMAL;
42-- 42--
431.7.9.4 431.7.9.5
44 44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch
index e6bd10fe..e7063dfc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch
@@ -1,7 +1,7 @@
1From 967087957c3661dc97da0f17d3be6d7b105d8d0e Mon Sep 17 00:00:00 2001 1From 12b3ec5c806e2daef619f068f80115f4dc0aa6bb Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com> 2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Wed, 11 Jan 2012 09:26:54 +0100 3Date: Wed, 11 Jan 2012 09:26:54 +0100
4Subject: [PATCH 048/130] mac80211: fix rx->key NULL pointer dereference in 4Subject: [PATCH 048/129] mac80211: fix rx->key NULL pointer dereference in
5 promiscuous mode 5 promiscuous mode
6 6
7commit 1140afa862842ac3e56678693050760edc4ecde9 upstream. 7commit 1140afa862842ac3e56678693050760edc4ecde9 upstream.
@@ -48,5 +48,5 @@ index f614ce7..28a39bb 100644
48 48
49 return RX_CONTINUE; 49 return RX_CONTINUE;
50-- 50--
511.7.9.4 511.7.9.5
52 52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch
index ac047aba..13131032 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch
@@ -1,7 +1,7 @@
1From 83f574499fed31e6824e7c77f16353bc8a2e2cb4 Mon Sep 17 00:00:00 2001 1From f7938357cefb08ed00118138736f4d475fbc6578 Mon Sep 17 00:00:00 2001
2From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> 2From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
3Date: Mon, 9 Jan 2012 15:37:53 +0530 3Date: Mon, 9 Jan 2012 15:37:53 +0530
4Subject: [PATCH 049/130] ath9k: Fix regression in channelwidth switch at the 4Subject: [PATCH 049/129] ath9k: Fix regression in channelwidth switch at the
5 same channel 5 same channel
6 6
7commit 1a19f77f3642b8194ad9cf55548cc5d92e841766 upstream. 7commit 1a19f77f3642b8194ad9cf55548cc5d92e841766 upstream.
@@ -64,5 +64,5 @@ index a9c5ae7..f76a814 100644
64 ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos], 64 ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos],
65 curchan, conf->channel_type); 65 curchan, conf->channel_type);
66-- 66--
671.7.9.4 671.7.9.5
68 68
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch
index 0be7af57..a3cc1885 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch
@@ -1,7 +1,7 @@
1From 650ad91dac98e319ac975a625b9cab24ebd132ce Mon Sep 17 00:00:00 2001 1From 3a43cb3518148d31838d97bff3e6fcc29487499d Mon Sep 17 00:00:00 2001
2From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> 2From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
3Date: Thu, 12 Jan 2012 17:17:44 -0800 3Date: Thu, 12 Jan 2012 17:17:44 -0800
4Subject: [PATCH 050/130] memcg: add mem_cgroup_replace_page_cache() to fix 4Subject: [PATCH 050/129] memcg: add mem_cgroup_replace_page_cache() to fix
5 LRU issue 5 LRU issue
6 6
7commit ab936cbcd02072a34b60d268f94440fd5cf1970b upstream. 7commit ab936cbcd02072a34b60d268f94440fd5cf1970b upstream.
@@ -175,5 +175,5 @@ index b63f5f7..f538e9b 100644
175 static struct page_cgroup *lookup_page_cgroup_used(struct page *page) 175 static struct page_cgroup *lookup_page_cgroup_used(struct page *page)
176 { 176 {
177-- 177--
1781.7.9.4 1781.7.9.5
179 179
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch
index c9d95686..fce15686 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch
@@ -1,7 +1,7 @@
1From 441972dde2baf1369a136fcaa27c06881d6ef013 Mon Sep 17 00:00:00 2001 1From 65ce587697fd360eea3dc06a3a1422d63a159fd1 Mon Sep 17 00:00:00 2001
2From: Ludwig Nussel <ludwig.nussel@suse.de> 2From: Ludwig Nussel <ludwig.nussel@suse.de>
3Date: Tue, 15 Nov 2011 14:46:46 -0800 3Date: Tue, 15 Nov 2011 14:46:46 -0800
4Subject: [PATCH 051/130] x86: Fix mmap random address range 4Subject: [PATCH 051/129] x86: Fix mmap random address range
5 5
6commit 9af0c7a6fa860698d080481f24a342ba74b68982 upstream. 6commit 9af0c7a6fa860698d080481f24a342ba74b68982 upstream.
7 7
@@ -43,5 +43,5 @@ index 4b5ba85..845df68 100644
43 return rnd << PAGE_SHIFT; 43 return rnd << PAGE_SHIFT;
44 } 44 }
45-- 45--
461.7.9.4 461.7.9.5
47 47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch
index c11f120f..5d261cc6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch
@@ -1,7 +1,7 @@
1From e267c0b024968875114941870843e03aed277585 Mon Sep 17 00:00:00 2001 1From addbb632cd11d02b5386a9ebf040b0f89b6e2c84 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at> 2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 13 Jan 2012 15:07:40 +0100 3Date: Fri, 13 Jan 2012 15:07:40 +0100
4Subject: [PATCH 052/130] UBI: fix nameless volumes handling 4Subject: [PATCH 052/129] UBI: fix nameless volumes handling
5 5
6commit 4a59c797a18917a5cf3ff7ade296b46134d91e6a upstream. 6commit 4a59c797a18917a5cf3ff7ade296b46134d91e6a upstream.
7 7
@@ -33,5 +33,5 @@ index 3320a50..ad76592 100644
33 err = -ENAMETOOLONG; 33 err = -ENAMETOOLONG;
34 goto bad; 34 goto bad;
35-- 35--
361.7.9.4 361.7.9.5
37 37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch
index cb230bc0..83cd1b12 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch
@@ -1,7 +1,7 @@
1From a28e25b364a1ed96a8a19fbf5328bb750af80342 Mon Sep 17 00:00:00 2001 1From 96bd5436400b64fe57b0be756f9424b1e1d1e430 Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> 2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Tue, 10 Jan 2012 19:32:30 +0200 3Date: Tue, 10 Jan 2012 19:32:30 +0200
4Subject: [PATCH 053/130] UBI: fix debugging messages 4Subject: [PATCH 053/129] UBI: fix debugging messages
5 5
6commit 72f0d453d81d35087b1d3ad7c8285628c2be6e1d upstream. 6commit 72f0d453d81d35087b1d3ad7c8285628c2be6e1d upstream.
7 7
@@ -38,5 +38,5 @@ index 64fbb00..ead2cd1 100644
38 #define dbg_gen(fmt, ...) ubi_dbg_msg("gen", fmt, ##__VA_ARGS__) 38 #define dbg_gen(fmt, ...) ubi_dbg_msg("gen", fmt, ##__VA_ARGS__)
39 /* Messages from the eraseblock association sub-system */ 39 /* Messages from the eraseblock association sub-system */
40-- 40--
411.7.9.4 411.7.9.5
42 42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch
index f64141e9..2790744f 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch
@@ -1,7 +1,7 @@
1From 1abfab7c1e994f5b4419387491666091141f9dbf Mon Sep 17 00:00:00 2001 1From f767fd8bc40accebf74bdee01946ed6452a626df Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <rw@linutronix.de> 2From: Richard Weinberger <rw@linutronix.de>
3Date: Thu, 22 Dec 2011 16:12:57 +0100 3Date: Thu, 22 Dec 2011 16:12:57 +0100
4Subject: [PATCH 054/130] UBI: make vid_hdr non-static 4Subject: [PATCH 054/129] UBI: make vid_hdr non-static
5 5
6commit 6bdccffe8c4268d02f71873102131fb6ed37ed9a upstream. 6commit 6bdccffe8c4268d02f71873102131fb6ed37ed9a upstream.
7 7
@@ -32,5 +32,5 @@ index 9ad18da..890754c 100644
32 32
33 ubi_msg("create volume table (copy #%d)", copy + 1); 33 ubi_msg("create volume table (copy #%d)", copy + 1);
34-- 34--
351.7.9.4 351.7.9.5
36 36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch
index 6b5fbd6e..9c457123 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch
@@ -1,7 +1,7 @@
1From 45ed8ba5d25772dde8ca17b50a3f5f64ceb9633e Mon Sep 17 00:00:00 2001 1From 6c07a86a7e8ac8231be518705c91ba4b32da1813 Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> 2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Tue, 10 Jan 2012 19:32:30 +0200 3Date: Tue, 10 Jan 2012 19:32:30 +0200
4Subject: [PATCH 055/130] UBIFS: fix debugging messages 4Subject: [PATCH 055/129] UBIFS: fix debugging messages
5 5
6commit d34315da9146253351146140ea4b277193ee5e5f upstream. 6commit d34315da9146253351146140ea4b277193ee5e5f upstream.
7 7
@@ -37,5 +37,5 @@ index 8d9c468..3f65829 100644
37 #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__) 37 #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__)
38 /* Additional journal messages */ 38 /* Additional journal messages */
39-- 39--
401.7.9.4 401.7.9.5
41 41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch
index 2f8c6fae..8ad2285d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch
@@ -1,7 +1,7 @@
1From a5db2eaeb04f9d74c9f7655cc87b4a41597a9878 Mon Sep 17 00:00:00 2001 1From 400fba6cfdfd168d550113f665c3b168cf9214cf Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> 2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Wed, 11 Jan 2012 15:13:27 +0200 3Date: Wed, 11 Jan 2012 15:13:27 +0200
4Subject: [PATCH 056/130] UBIFS: make debugging messages light again 4Subject: [PATCH 056/129] UBIFS: make debugging messages light again
5 5
6commit 1f5d78dc4823a85f112aaa2d0f17624f8c2a6c52 upstream. 6commit 1f5d78dc4823a85f112aaa2d0f17624f8c2a6c52 upstream.
7 7
@@ -53,5 +53,5 @@ index 3f65829..c9d2941 100644
53 /* Just a debugging messages not related to any specific UBIFS subsystem */ 53 /* Just a debugging messages not related to any specific UBIFS subsystem */
54 #define dbg_msg(fmt, ...) \ 54 #define dbg_msg(fmt, ...) \
55-- 55--
561.7.9.4 561.7.9.5
57 57
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch
index a3693943..528fc93d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch
@@ -1,7 +1,7 @@
1From 87147adea587be2efe99757f6e8a87c585da9799 Mon Sep 17 00:00:00 2001 1From c9f51b32db94ab1e2dc628cc379f7cc7013801f5 Mon Sep 17 00:00:00 2001
2From: Jean Delvare <khali@linux-fr.org> 2From: Jean Delvare <khali@linux-fr.org>
3Date: Thu, 12 Jan 2012 20:32:03 +0100 3Date: Thu, 12 Jan 2012 20:32:03 +0100
4Subject: [PATCH 057/130] i2c: Fix error value returned by several bus drivers 4Subject: [PATCH 057/129] i2c: Fix error value returned by several bus drivers
5 5
6commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream. 6commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream.
7 7
@@ -193,5 +193,5 @@ index 0b012f1..58261d4 100644
193 193
194 /* Always return failure here. This is to allow other drivers to bind 194 /* Always return failure here. This is to allow other drivers to bind
195-- 195--
1961.7.9.4 1961.7.9.5
197 197
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch
index 77156946..db3a0d05 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch
@@ -1,7 +1,7 @@
1From 92ea9daee26a54bdae410e9361d5059506278450 Mon Sep 17 00:00:00 2001 1From 4272b6efe99cd197257777ddeaff1b2bf5428a13 Mon Sep 17 00:00:00 2001
2From: Girish K S <girish.shivananjappa@linaro.org> 2From: Girish K S <girish.shivananjappa@linaro.org>
3Date: Thu, 15 Dec 2011 17:27:42 +0530 3Date: Thu, 15 Dec 2011 17:27:42 +0530
4Subject: [PATCH 058/130] mmc: core: Fix voltage select in DDR mode 4Subject: [PATCH 058/129] mmc: core: Fix voltage select in DDR mode
5 5
6commit 913047e9e5787a90696533a9f109552b7694ecc9 upstream. 6commit 913047e9e5787a90696533a9f109552b7694ecc9 upstream.
7 7
@@ -35,5 +35,5 @@ index d240427..fb7c27f 100644
35 MMC_SIGNAL_VOLTAGE_120, 0); 35 MMC_SIGNAL_VOLTAGE_120, 0);
36 if (err) 36 if (err)
37-- 37--
381.7.9.4 381.7.9.5
39 39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch
index 7b0bf1f9..2d011333 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch
@@ -1,7 +1,7 @@
1From 4e6fa28c494b5482b5ec4516a53c7c0961350788 Mon Sep 17 00:00:00 2001 1From 5fda16f987c13e470fd4a4ae87dd3ed6b4f5be46 Mon Sep 17 00:00:00 2001
2From: Aaron Lu <aaron.lu@amd.com> 2From: Aaron Lu <aaron.lu@amd.com>
3Date: Wed, 28 Dec 2011 11:11:12 +0800 3Date: Wed, 28 Dec 2011 11:11:12 +0800
4Subject: [PATCH 059/130] mmc: sdhci: Fix tuning timer incorrect setting when 4Subject: [PATCH 059/129] mmc: sdhci: Fix tuning timer incorrect setting when
5 suspending host 5 suspending host
6 6
7commit c6ced0db08010ed75df221a2946c5228454b38d5 upstream. 7commit c6ced0db08010ed75df221a2946c5228454b38d5 upstream.
@@ -35,5 +35,5 @@ index 19ed580..9279c1b 100644
35 35
36 ret = mmc_suspend_host(host->mmc); 36 ret = mmc_suspend_host(host->mmc);
37-- 37--
381.7.9.4 381.7.9.5
39 39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch
index a861903f..0760c625 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch
@@ -1,7 +1,7 @@
1From 0fdade2c65ed31702e3babf8dd5df4caafe44aa4 Mon Sep 17 00:00:00 2001 1From 54914e0a2c7c46dd863ba4ca2f530591c8cea37f Mon Sep 17 00:00:00 2001
2From: Alexander Elbs <alex@segv.de> 2From: Alexander Elbs <alex@segv.de>
3Date: Tue, 3 Jan 2012 23:26:53 -0500 3Date: Tue, 3 Jan 2012 23:26:53 -0500
4Subject: [PATCH 060/130] mmc: sd: Fix SDR12 timing regression 4Subject: [PATCH 060/129] mmc: sd: Fix SDR12 timing regression
5 5
6commit dd8df17fe83483d7ea06ff229895e35a42071599 upstream. 6commit dd8df17fe83483d7ea06ff229895e35a42071599 upstream.
7 7
@@ -34,5 +34,5 @@ index 9279c1b..6ce32a7 100644
34 34
35 ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2); 35 ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
36-- 36--
371.7.9.4 371.7.9.5
38 38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch
index 78fece96..293dd528 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch
@@ -1,7 +1,7 @@
1From e0a32f416043d1d3dde8fccfacaaaf1dbaa07ea8 Mon Sep 17 00:00:00 2001 1From 51aa88e66716df0c5b5df5b8815cbf0b7b50ac35 Mon Sep 17 00:00:00 2001
2From: Dan Carpenter <dan.carpenter@oracle.com> 2From: Dan Carpenter <dan.carpenter@oracle.com>
3Date: Thu, 5 Jan 2012 02:27:57 -0300 3Date: Thu, 5 Jan 2012 02:27:57 -0300
4Subject: [PATCH 061/130] V4L/DVB: v4l2-ioctl: integer overflow in 4Subject: [PATCH 061/129] V4L/DVB: v4l2-ioctl: integer overflow in
5 video_usercopy() 5 video_usercopy()
6 6
7commit 6c06108be53ca5e94d8b0e93883d534dd9079646 upstream. 7commit 6c06108be53ca5e94d8b0e93883d534dd9079646 upstream.
@@ -50,5 +50,5 @@ index 4b752d5..45a7698 100644
50 #define V4L2_CID_USER_BASE V4L2_CID_BASE 50 #define V4L2_CID_USER_BASE V4L2_CID_BASE
51 /* IDs reserved for driver specific controls */ 51 /* IDs reserved for driver specific controls */
52-- 52--
531.7.9.4 531.7.9.5
54 54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch
index 6c6b7a7c..1ca3eaef 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch
@@ -1,7 +1,7 @@
1From f7ba035a0f785d27f10fbd779056a8fb6b615b1c Mon Sep 17 00:00:00 2001 1From 0eeb9347d25c283bdbdd1a9e4d7d4881852887d1 Mon Sep 17 00:00:00 2001
2From: Gleb Natapov <gleb@redhat.com> 2From: Gleb Natapov <gleb@redhat.com>
3Date: Sun, 8 Jan 2012 17:07:28 +0200 3Date: Sun, 8 Jan 2012 17:07:28 +0200
4Subject: [PATCH 062/130] Unused iocbs in a batch should not be accounted as 4Subject: [PATCH 062/129] Unused iocbs in a batch should not be accounted as
5 active. 5 active.
6 6
7commit 69e4747ee9727d660b88d7e1efe0f4afcb35db1b upstream. 7commit 69e4747ee9727d660b88d7e1efe0f4afcb35db1b upstream.
@@ -67,5 +67,5 @@ index 78c514c..969beb0 100644
67 return i ? i : ret; 67 return i ? i : ret;
68 } 68 }
69-- 69--
701.7.9.4 701.7.9.5
71 71
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch
index 849d07bc..4a0cf7bd 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch
@@ -1,7 +1,7 @@
1From a440374ae75fd885b2b2d0c2fd932affa09ca0e9 Mon Sep 17 00:00:00 2001 1From 87a8f79b24eaa28f865547dc85b9c10b97a80686 Mon Sep 17 00:00:00 2001
2From: Jiri Olsa <jolsa@redhat.com> 2From: Jiri Olsa <jolsa@redhat.com>
3Date: Mon, 5 Dec 2011 18:22:48 +0100 3Date: Mon, 5 Dec 2011 18:22:48 +0100
4Subject: [PATCH 063/130] ftrace: Fix unregister ftrace_ops accounting 4Subject: [PATCH 063/129] ftrace: Fix unregister ftrace_ops accounting
5 5
6commit 30fb6aa74011dcf595f306ca2727254d708b786e upstream. 6commit 30fb6aa74011dcf595f306ca2727254d708b786e upstream.
7 7
@@ -223,5 +223,5 @@ index b1e8943..25b4f4d 100644
223 mutex_unlock(&ftrace_lock); 223 mutex_unlock(&ftrace_lock);
224 } 224 }
225-- 225--
2261.7.9.4 2261.7.9.5
227 227
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch
index a58d2e69..383b3f8c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch
@@ -1,7 +1,7 @@
1From d52eba613a8cd0e74e52248bff0ed579f3e801bc Mon Sep 17 00:00:00 2001 1From a3bca61c4e149d9e00102d41a0b81cae4fbca06f Mon Sep 17 00:00:00 2001
2From: Steven Rostedt <srostedt@redhat.com> 2From: Steven Rostedt <srostedt@redhat.com>
3Date: Fri, 13 Jan 2012 17:50:39 -0500 3Date: Fri, 13 Jan 2012 17:50:39 -0500
4Subject: [PATCH 064/130] kconfig/streamline-config.pl: Simplify backslash 4Subject: [PATCH 064/129] kconfig/streamline-config.pl: Simplify backslash
5 line concatination 5 line concatination
6 6
7commit d060d963e88f3e990cec2fe5214de49de9a49eca upstream. 7commit d060d963e88f3e990cec2fe5214de49de9a49eca upstream.
@@ -64,5 +64,5 @@ index ec7afce..42ef5ea 100644
64 $obj =~ s/-/_/g; 64 $obj =~ s/-/_/g;
65 if ($obj =~ /(.*)\.o$/) { 65 if ($obj =~ /(.*)\.o$/) {
66-- 66--
671.7.9.4 671.7.9.5
68 68
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch
index 161c0535..141754e7 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch
@@ -1,7 +1,7 @@
1From 8b26929b86cded7fa66cc9074a4090e14ebb0c4b Mon Sep 17 00:00:00 2001 1From ac774661d11eb00497542857681b22c652d3d67c Mon Sep 17 00:00:00 2001
2From: Steven Rostedt <srostedt@redhat.com> 2From: Steven Rostedt <srostedt@redhat.com>
3Date: Fri, 13 Jan 2012 17:53:40 -0500 3Date: Fri, 13 Jan 2012 17:53:40 -0500
4Subject: [PATCH 065/130] kconfig/streamline-config.pl: Fix parsing Makefile 4Subject: [PATCH 065/129] kconfig/streamline-config.pl: Fix parsing Makefile
5 with variables 5 with variables
6 6
7commit 364212fddaaa60c5a64f67a0f5624ad996ecc8a0 upstream. 7commit 364212fddaaa60c5a64f67a0f5624ad996ecc8a0 upstream.
@@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
39 1 file changed, 29 insertions(+) 39 1 file changed, 29 insertions(+)
40 40
41diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl 41diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
42index 42ef5ea..bccf07d 100644 42index 42ef5ea..bccf07dd 100644
43--- a/scripts/kconfig/streamline_config.pl 43--- a/scripts/kconfig/streamline_config.pl
44+++ b/scripts/kconfig/streamline_config.pl 44+++ b/scripts/kconfig/streamline_config.pl
45@@ -250,10 +250,33 @@ if ($kconfig) { 45@@ -250,10 +250,33 @@ if ($kconfig) {
@@ -94,5 +94,5 @@ index 42ef5ea..bccf07d 100644
94 if (defined($objs)) { 94 if (defined($objs)) {
95 foreach my $obj (split /\s+/,$objs) { 95 foreach my $obj (split /\s+/,$objs) {
96-- 96--
971.7.9.4 971.7.9.5
98 98
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch
index b029800b..76168fbf 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch
@@ -1,7 +1,7 @@
1From d3c9b9c72a382b9a4b8516e80896c278611b4f8a Mon Sep 17 00:00:00 2001 1From 184eee2d8b585d5e2a0ec3f2c50f682e91ef769a Mon Sep 17 00:00:00 2001
2From: "J. Bruce Fields" <bfields@redhat.com> 2From: "J. Bruce Fields" <bfields@redhat.com>
3Date: Thu, 22 Dec 2011 18:22:49 -0700 3Date: Thu, 22 Dec 2011 18:22:49 -0700
4Subject: [PATCH 066/130] svcrpc: fix double-free on shutdown of nfsd after 4Subject: [PATCH 066/129] svcrpc: fix double-free on shutdown of nfsd after
5 changing pool mode 5 changing pool mode
6 6
7commit 61c8504c428edcebf23b97775a129c5b393a302b upstream. 7commit 61c8504c428edcebf23b97775a129c5b393a302b upstream.
@@ -56,5 +56,5 @@ index 6e03888..5443ffd 100644
56 } 56 }
57 57
58-- 58--
591.7.9.4 591.7.9.5
60 60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch
index ab58b1da..23264cae 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch
@@ -1,7 +1,7 @@
1From d6eeab4595a510bd2e02a2e3055e02e9a70229de Mon Sep 17 00:00:00 2001 1From 7bbbb974406d83275664903d43b9e9bf4b99c131 Mon Sep 17 00:00:00 2001
2From: "J. Bruce Fields" <bfields@redhat.com> 2From: "J. Bruce Fields" <bfields@redhat.com>
3Date: Tue, 29 Nov 2011 11:35:35 -0500 3Date: Tue, 29 Nov 2011 11:35:35 -0500
4Subject: [PATCH 067/130] svcrpc: destroy server sockets all at once 4Subject: [PATCH 067/129] svcrpc: destroy server sockets all at once
5 5
6commit 2fefb8a09e7ed251ae8996e0c69066e74c5aa560 upstream. 6commit 2fefb8a09e7ed251ae8996e0c69066e74c5aa560 upstream.
7 7
@@ -81,5 +81,5 @@ index 447cd0e..dcdc8df 100644
81 * Handle defer and revisit of requests 81 * Handle defer and revisit of requests
82 */ 82 */
83-- 83--
841.7.9.4 841.7.9.5
85 85
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch
index f66761f6..494d9098 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch
@@ -1,7 +1,7 @@
1From a8f0e6b90652d17d0c024d07c2b2bebe5193fc38 Mon Sep 17 00:00:00 2001 1From 5faa65a4101dc292e7d43c525e87f4f2acae40e3 Mon Sep 17 00:00:00 2001
2From: "J. Bruce Fields" <bfields@redhat.com> 2From: "J. Bruce Fields" <bfields@redhat.com>
3Date: Tue, 29 Nov 2011 17:00:26 -0500 3Date: Tue, 29 Nov 2011 17:00:26 -0500
4Subject: [PATCH 068/130] svcrpc: avoid memory-corruption on pool shutdown 4Subject: [PATCH 068/129] svcrpc: avoid memory-corruption on pool shutdown
5 5
6commit b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 upstream. 6commit b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 upstream.
7 7
@@ -152,5 +152,5 @@ index dcdc8df..9ed2cd0 100644
152 152
153 /* 153 /*
154-- 154--
1551.7.9.4 1551.7.9.5
156 156
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch
index 47afe62e..06f300bf 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch
@@ -1,7 +1,7 @@
1From f106681ab48d6ab554c724d829c7440ba7b02385 Mon Sep 17 00:00:00 2001 1From 041400912607efd62cf9aa6ad4e5ad6baf957f1a Mon Sep 17 00:00:00 2001
2From: "J. Bruce Fields" <bfields@redhat.com> 2From: "J. Bruce Fields" <bfields@redhat.com>
3Date: Mon, 7 Nov 2011 16:37:57 -0500 3Date: Mon, 7 Nov 2011 16:37:57 -0500
4Subject: [PATCH 069/130] nfsd4: fix lockowner matching 4Subject: [PATCH 069/129] nfsd4: fix lockowner matching
5 5
6commit b93d87c19821ba7d3ee11557403d782e541071ad upstream. 6commit b93d87c19821ba7d3ee11557403d782e541071ad upstream.
7 7
@@ -55,5 +55,5 @@ index 47e94e3..5abced7 100644
55 return NULL; 55 return NULL;
56 } 56 }
57-- 57--
581.7.9.4 581.7.9.5
59 59
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch
index 7e39e919..42f3853f 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch
@@ -1,7 +1,7 @@
1From 5e9cbf662652df0e31bfe68d1e490b59946903aa Mon Sep 17 00:00:00 2001 1From 57a7686869f3ca7dfb8694583c88b5dfd510e4f6 Mon Sep 17 00:00:00 2001
2From: Sasha Levin <levinsasha928@gmail.com> 2From: Sasha Levin <levinsasha928@gmail.com>
3Date: Fri, 18 Nov 2011 12:14:49 +0200 3Date: Fri, 18 Nov 2011 12:14:49 +0200
4Subject: [PATCH 070/130] nfsd: Fix oops when parsing a 0 length export 4Subject: [PATCH 070/129] nfsd: Fix oops when parsing a 0 length export
5 5
6commit b2ea70afade7080360ac55c4e64ff7a5fafdb67b upstream. 6commit b2ea70afade7080360ac55c4e64ff7a5fafdb67b upstream.
7 7
@@ -78,5 +78,5 @@ index 62f3b90..5f312ab 100644
78 mesg[mlen-1] = 0; 78 mesg[mlen-1] = 0;
79 79
80-- 80--
811.7.9.4 811.7.9.5
82 82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch
index 77dc9814..b3204672 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch
@@ -1,7 +1,7 @@
1From 02b345f49fe190f76c4191d6f189ce6ba1c86a1f Mon Sep 17 00:00:00 2001 1From 25778654573b3763a5f34e694b17ec9ff43fb3bb Mon Sep 17 00:00:00 2001
2From: Miklos Szeredi <mszeredi@suse.cz> 2From: Miklos Szeredi <mszeredi@suse.cz>
3Date: Thu, 12 Jan 2012 17:59:46 +0100 3Date: Thu, 12 Jan 2012 17:59:46 +0100
4Subject: [PATCH 071/130] fsnotify: don't BUG in fsnotify_destroy_mark() 4Subject: [PATCH 071/129] fsnotify: don't BUG in fsnotify_destroy_mark()
5 5
6commit fed474857efbed79cd390d0aee224231ca718f63 upstream. 6commit fed474857efbed79cd390d0aee224231ca718f63 upstream.
7 7
@@ -57,5 +57,5 @@ index e14587d..f104d56 100644
57 * this mark was simultaneously being freed by inode. If that's the 57 * this mark was simultaneously being freed by inode. If that's the
58 * case, we finish freeing the group here. 58 * case, we finish freeing the group here.
59-- 59--
601.7.9.4 601.7.9.5
61 61
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch
index 80e9a737..fc5632bb 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch
@@ -1,7 +1,7 @@
1From bf48d4506f72e6b2d8d6bd950aa5d32349f67d1d Mon Sep 17 00:00:00 2001 1From 76df9b14b1edf95a3f1194c0b08547e50931fefd Mon Sep 17 00:00:00 2001
2From: Jack Steiner <steiner@sgi.com> 2From: Jack Steiner <steiner@sgi.com>
3Date: Fri, 6 Jan 2012 13:19:00 -0600 3Date: Fri, 6 Jan 2012 13:19:00 -0600
4Subject: [PATCH 072/130] x86, UV: Update Boot messages for SGI UV2 platform 4Subject: [PATCH 072/129] x86, UV: Update Boot messages for SGI UV2 platform
5 5
6commit da517a08ac5913cd80ce3507cddd00f2a091b13c upstream. 6commit da517a08ac5913cd80ce3507cddd00f2a091b13c upstream.
7 7
@@ -40,5 +40,5 @@ index 9d59bba..79b05b8 100644
40 bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades(); 40 bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades();
41 uv_blade_info = kzalloc(bytes, GFP_KERNEL); 41 uv_blade_info = kzalloc(bytes, GFP_KERNEL);
42-- 42--
431.7.9.4 431.7.9.5
44 44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch
index f919b971..06552c01 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch
@@ -1,7 +1,7 @@
1From 44ee897aa3824a1e070fc8b307ece4d3e03fb1c6 Mon Sep 17 00:00:00 2001 1From 4b493a169e4e0955d63015a30910a15d4d2cefed Mon Sep 17 00:00:00 2001
2From: David Daney <david.daney@cavium.com> 2From: David Daney <david.daney@cavium.com>
3Date: Mon, 19 Dec 2011 17:42:42 -0800 3Date: Mon, 19 Dec 2011 17:42:42 -0800
4Subject: [PATCH 073/130] recordmcount: Fix handling of elf64 big-endian 4Subject: [PATCH 073/129] recordmcount: Fix handling of elf64 big-endian
5 objects. 5 objects.
6 6
7commit 2e885057b7f75035f0b85e02f737891482815a81 upstream. 7commit 2e885057b7f75035f0b85e02f737891482815a81 upstream.
@@ -42,5 +42,5 @@ index f40a6af6..54e35c1 100644
42 return txtname; 42 return txtname;
43 } 43 }
44-- 44--
451.7.9.4 451.7.9.5
46 46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch
index 6692b99a..d9a8f19b 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch
@@ -1,7 +1,7 @@
1From 237564961047194a9d952292197ccc794264cab7 Mon Sep 17 00:00:00 2001 1From ea50d13fefca15eb7d541f1830b2361943090063 Mon Sep 17 00:00:00 2001
2From: Haogang Chen <haogangchen@gmail.com> 2From: Haogang Chen <haogangchen@gmail.com>
3Date: Tue, 29 Nov 2011 18:32:25 -0300 3Date: Tue, 29 Nov 2011 18:32:25 -0300
4Subject: [PATCH 074/130] uvcvideo: Fix integer overflow in 4Subject: [PATCH 074/129] uvcvideo: Fix integer overflow in
5 uvc_ioctl_ctrl_map() 5 uvc_ioctl_ctrl_map()
6 6
7commit 806e23e95f94a27ee445022d724060b9b45cb64a upstream. 7commit 806e23e95f94a27ee445022d724060b9b45cb64a upstream.
@@ -58,5 +58,5 @@ index 4c1392e..bc446ba 100644
58 /* Devices quirks */ 58 /* Devices quirks */
59 #define UVC_QUIRK_STATUS_INTERVAL 0x00000001 59 #define UVC_QUIRK_STATUS_INTERVAL 0x00000001
60-- 60--
611.7.9.4 611.7.9.5
62 62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch
index 4905db23..9ab9f3dc 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch
@@ -1,7 +1,7 @@
1From 396e27ebad49960c3fc3871b5d3204433c68228a Mon Sep 17 00:00:00 2001 1From 4289e10c1a424c39e50bb4c44447da025fdf37b9 Mon Sep 17 00:00:00 2001
2From: Dave Chinner <david@fromorbit.com> 2From: Dave Chinner <david@fromorbit.com>
3Date: Tue, 23 Aug 2011 18:56:24 +1000 3Date: Tue, 23 Aug 2011 18:56:24 +1000
4Subject: [PATCH 075/130] dcache: use a dispose list in select_parent 4Subject: [PATCH 075/129] dcache: use a dispose list in select_parent
5 5
6commit b48f03b319ba78f3abf9a7044d1f436d8d90f4f9 upstream. 6commit b48f03b319ba78f3abf9a7044d1f436d8d90f4f9 upstream.
7 7
@@ -168,5 +168,5 @@ index 89509b5..108116e 100644
168 EXPORT_SYMBOL(shrink_dcache_parent); 168 EXPORT_SYMBOL(shrink_dcache_parent);
169 169
170-- 170--
1711.7.9.4 1711.7.9.5
172 172
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch
index 1f4dc36a..7d33d3cb 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch
@@ -1,7 +1,7 @@
1From 6eab425273195281f84409f2d6dcc004b528d42c Mon Sep 17 00:00:00 2001 1From 72a350429f61098d46984c13e8da293ec7a8ffe4 Mon Sep 17 00:00:00 2001
2From: Miklos Szeredi <miklos@szeredi.hu> 2From: Miklos Szeredi <miklos@szeredi.hu>
3Date: Tue, 10 Jan 2012 18:22:25 +0100 3Date: Tue, 10 Jan 2012 18:22:25 +0100
4Subject: [PATCH 076/130] fix shrink_dcache_parent() livelock 4Subject: [PATCH 076/129] fix shrink_dcache_parent() livelock
5 5
6commit eaf5f9073533cde21c7121c136f1c3f072d9cf59 upstream. 6commit eaf5f9073533cde21c7121c136f1c3f072d9cf59 upstream.
7 7
@@ -126,5 +126,5 @@ index ed9f74f..4eb8c80 100644
126 #define DCACHE_NFSFS_RENAMED 0x1000 126 #define DCACHE_NFSFS_RENAMED 0x1000
127 /* this dentry has been "silly renamed" and has to be deleted on the last 127 /* this dentry has been "silly renamed" and has to be deleted on the last
128-- 128--
1291.7.9.4 1291.7.9.5
130 130
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch
index 03f3cfdd..50c770c6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch
@@ -1,7 +1,7 @@
1From d09a2f22bfced52dcccd53ccc62d2cd5d9f194b7 Mon Sep 17 00:00:00 2001 1From ff2123e28998f18ebfddf17f1babbc0db77e9857 Mon Sep 17 00:00:00 2001
2From: Peng Tao <bergwolf@gmail.com> 2From: Peng Tao <bergwolf@gmail.com>
3Date: Thu, 12 Jan 2012 23:18:41 +0800 3Date: Thu, 12 Jan 2012 23:18:41 +0800
4Subject: [PATCH 077/130] pnfsblock: acquire im_lock in _preload_range 4Subject: [PATCH 077/129] pnfsblock: acquire im_lock in _preload_range
5 5
6commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream. 6commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream.
7 7
@@ -60,5 +60,5 @@ index 19fa7b0..c69682a 100644
60 60
61 spin_lock(&marks->im_lock); 61 spin_lock(&marks->im_lock);
62-- 62--
631.7.9.4 631.7.9.5
64 64
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch
index 5896cb3a..bc8b40dd 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch
@@ -1,7 +1,7 @@
1From 0a4609957e5bbe4572cf9ace9e5011281295f296 Mon Sep 17 00:00:00 2001 1From c483f16efb181ee2384aa9d5672ebebfc714ab1d Mon Sep 17 00:00:00 2001
2From: Peng Tao <bergwolf@gmail.com> 2From: Peng Tao <bergwolf@gmail.com>
3Date: Thu, 12 Jan 2012 23:18:47 +0800 3Date: Thu, 12 Jan 2012 23:18:47 +0800
4Subject: [PATCH 078/130] pnfsblock: don't spinlock when freeing block_dev 4Subject: [PATCH 078/129] pnfsblock: don't spinlock when freeing block_dev
5 5
6commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24 upstream. 6commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24 upstream.
7 7
@@ -42,5 +42,5 @@ index 281ae95..ce8129d 100644
42 } 42 }
43 } 43 }
44-- 44--
451.7.9.4 451.7.9.5
46 46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch
index 7adc892a..f003ff07 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch
@@ -1,7 +1,7 @@
1From c4fcaffd613b46fc4257023138c60d8f164bf584 Mon Sep 17 00:00:00 2001 1From a9de14f6624613210b273a24046142495f745038 Mon Sep 17 00:00:00 2001
2From: Peng Tao <bergwolf@gmail.com> 2From: Peng Tao <bergwolf@gmail.com>
3Date: Thu, 12 Jan 2012 23:18:48 +0800 3Date: Thu, 12 Jan 2012 23:18:48 +0800
4Subject: [PATCH 079/130] pnfsblock: limit bio page count 4Subject: [PATCH 079/129] pnfsblock: limit bio page count
5 5
6commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80 upstream. 6commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80 upstream.
7 7
@@ -47,5 +47,5 @@ index ce8129d..3db6b82 100644
47 } 47 }
48 48
49-- 49--
501.7.9.4 501.7.9.5
51 51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch
index 7437cf4b..77b753d0 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch
@@ -1,7 +1,7 @@
1From f3c55c9f0c6182e6a455ae406406e280ac34544c Mon Sep 17 00:00:00 2001 1From 785fae0af79dd35416a44469930c2cbe87ff2c48 Mon Sep 17 00:00:00 2001
2From: Johannes Berg <johannes.berg@intel.com> 2From: Johannes Berg <johannes.berg@intel.com>
3Date: Tue, 29 Nov 2011 10:20:02 +0100 3Date: Tue, 29 Nov 2011 10:20:02 +0100
4Subject: [PATCH 080/130] mac80211: revert on-channel work optimisations 4Subject: [PATCH 080/129] mac80211: revert on-channel work optimisations
5 5
6commit e76aadc572288a158ae18ae1c10fe395c7bca066 upstream. 6commit e76aadc572288a158ae18ae1c10fe395c7bca066 upstream.
7 7
@@ -631,5 +631,5 @@ index 6c53b6d..99165ef 100644
631 /* give connection some time to breathe */ 631 /* give connection some time to breathe */
632 run_again(local, jiffies + HZ/2); 632 run_again(local, jiffies + HZ/2);
633-- 633--
6341.7.9.4 6341.7.9.5
635 635
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch
index a03602e0..5db3fea1 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch
@@ -1,7 +1,7 @@
1From 461b534b6a695034c7554b2bdf163b2ecb73b80d Mon Sep 17 00:00:00 2001 1From 15efaf9be89966a57b4d147511de686976e4a4eb Mon Sep 17 00:00:00 2001
2From: Chris Bagwell <chris@cnpbagwell.com> 2From: Chris Bagwell <chris@cnpbagwell.com>
3Date: Wed, 23 Nov 2011 10:54:27 +0100 3Date: Wed, 23 Nov 2011 10:54:27 +0100
4Subject: [PATCH 081/130] HID: hid-multitouch - add another eGalax id 4Subject: [PATCH 081/129] HID: hid-multitouch - add another eGalax id
5 5
6commit 1fd8f047490dd0ec4e4db710fcbc1bd4798d944c upstream. 6commit 1fd8f047490dd0ec4e4db710fcbc1bd4798d944c upstream.
7 7
@@ -56,5 +56,5 @@ index f1c909f..a59d939 100644
56 /* Elo TouchSystems IntelliTouch Plus panel */ 56 /* Elo TouchSystems IntelliTouch Plus panel */
57 { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, 57 { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID,
58-- 58--
591.7.9.4 591.7.9.5
60 60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch
index 1b523b8e..807223b6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch
@@ -1,7 +1,7 @@
1From c5c78207f8bd4e2613d6c132d92d53e7de9f2cba Mon Sep 17 00:00:00 2001 1From 13e475d4826aa0be579632fd2a7473aee213e82b Mon Sep 17 00:00:00 2001
2From: Benjamin Tissoires <benjamin.tissoires@enac.fr> 2From: Benjamin Tissoires <benjamin.tissoires@enac.fr>
3Date: Wed, 23 Nov 2011 10:54:31 +0100 3Date: Wed, 23 Nov 2011 10:54:31 +0100
4Subject: [PATCH 082/130] HID: multitouch: cleanup with eGalax PID definitions 4Subject: [PATCH 082/129] HID: multitouch: cleanup with eGalax PID definitions
5 5
6commit e36f690b37945e0a9bb1554e1546eeec93f7d1f6 upstream. 6commit e36f690b37945e0a9bb1554e1546eeec93f7d1f6 upstream.
7 7
@@ -108,5 +108,5 @@ index a59d939..815bd22 100644
108 /* Elo TouchSystems IntelliTouch Plus panel */ 108 /* Elo TouchSystems IntelliTouch Plus panel */
109 { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, 109 { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID,
110-- 110--
1111.7.9.4 1111.7.9.5
112 112
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch
index 7479c06a..f038705d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch
@@ -1,7 +1,7 @@
1From d920b5798c0d85998e5dae9304bef77c59320f12 Mon Sep 17 00:00:00 2001 1From d92a1f3e6dbdf628dec0f2a37f3920f89ef304fa Mon Sep 17 00:00:00 2001
2From: Marek Vasut <marek.vasut@gmail.com> 2From: Marek Vasut <marek.vasut@gmail.com>
3Date: Wed, 23 Nov 2011 10:54:32 +0100 3Date: Wed, 23 Nov 2011 10:54:32 +0100
4Subject: [PATCH 083/130] HID: multitouch: Add egalax ID for Acer Iconia W500 4Subject: [PATCH 083/129] HID: multitouch: Add egalax ID for Acer Iconia W500
5 5
6commit bb9ff21072043634f147c05ac65dbf8185d4af6d upstream. 6commit bb9ff21072043634f147c05ac65dbf8185d4af6d upstream.
7 7
@@ -58,5 +58,5 @@ index 815bd22..c77d495 100644
58 58
59 /* Elo TouchSystems IntelliTouch Plus panel */ 59 /* Elo TouchSystems IntelliTouch Plus panel */
60-- 60--
611.7.9.4 611.7.9.5
62 62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch
index 8494df7e..94eb6c36 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch
@@ -1,7 +1,7 @@
1From 9bd4b771e9f598f5cebad5146585eb30ececf118 Mon Sep 17 00:00:00 2001 1From a68c39aa3ae77996cb2f2cefe21ad1e62e1767a5 Mon Sep 17 00:00:00 2001
2From: Benjamin Tissoires <benjamin.tissoires@enac.fr> 2From: Benjamin Tissoires <benjamin.tissoires@enac.fr>
3Date: Wed, 23 Nov 2011 10:54:33 +0100 3Date: Wed, 23 Nov 2011 10:54:33 +0100
4Subject: [PATCH 084/130] HID: multitouch: add support for the MSI Windpad 4Subject: [PATCH 084/129] HID: multitouch: add support for the MSI Windpad
5 110W 5 110W
6 6
7commit 66f06127f34ad6e8a1b24a2c03144b694d19f99f upstream. 7commit 66f06127f34ad6e8a1b24a2c03144b694d19f99f upstream.
@@ -45,5 +45,5 @@ index c77d495..6f6b1d9 100644
45 { .driver_data = MT_CLS_EGALAX, 45 { .driver_data = MT_CLS_EGALAX,
46 HID_USB_DEVICE(USB_VENDOR_ID_DWAV, 46 HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
47-- 47--
481.7.9.4 481.7.9.5
49 49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch
index ea172f6e..f04d3eea 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch
@@ -1,7 +1,7 @@
1From 76fe9c37d75b5754a02958dfaa415b24e88e79f6 Mon Sep 17 00:00:00 2001 1From 4ed2fc990faee86390129e45efc3a3538bbac92b Mon Sep 17 00:00:00 2001
2From: Benjamin Tissoires <benjamin.tissoires@enac.fr> 2From: Benjamin Tissoires <benjamin.tissoires@enac.fr>
3Date: Tue, 29 Nov 2011 13:13:12 +0100 3Date: Tue, 29 Nov 2011 13:13:12 +0100
4Subject: [PATCH 085/130] HID: hid-multitouch: add support for new Hanvon 4Subject: [PATCH 085/129] HID: hid-multitouch: add support for new Hanvon
5 panels 5 panels
6 6
7commit 545803651da8dde248eeb8ce3ed1e547e9e4ac0a upstream. 7commit 545803651da8dde248eeb8ce3ed1e547e9e4ac0a upstream.
@@ -59,5 +59,5 @@ index 6f6b1d9..ea20c8e 100644
59 { .driver_data = MT_CLS_SERIAL, 59 { .driver_data = MT_CLS_SERIAL,
60 HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, 60 HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM,
61-- 61--
621.7.9.4 621.7.9.5
63 63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch
index a4613258..4298a32c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch
@@ -1,7 +1,7 @@
1From 865db49262c7496029b756c88a64a274d22dcf08 Mon Sep 17 00:00:00 2001 1From e554f29a63f8eae08e42cb59b1bc715fbf91b340 Mon Sep 17 00:00:00 2001
2From: Benjamin Tissoires <benjamin.tissoires@gmail.com> 2From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
3Date: Fri, 23 Dec 2011 15:40:59 +0100 3Date: Fri, 23 Dec 2011 15:40:59 +0100
4Subject: [PATCH 086/130] HID: multitouch: add support of Atmel multitouch 4Subject: [PATCH 086/129] HID: multitouch: add support of Atmel multitouch
5 panels 5 panels
6 6
7commit b105712469d957cf1ab223c1ea72b7ba88edb926 upstream. 7commit b105712469d957cf1ab223c1ea72b7ba88edb926 upstream.
@@ -59,5 +59,5 @@ index ea20c8e..7f83024 100644
59 { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER, 59 { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER,
60 HID_USB_DEVICE(USB_VENDOR_ID_CANDO, 60 HID_USB_DEVICE(USB_VENDOR_ID_CANDO,
61-- 61--
621.7.9.4 621.7.9.5
63 63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch
index d0701b6b..f3afca55 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch
@@ -1,7 +1,7 @@
1From a3e4bd3ab18fd8f60692869405d89513fa7caecc Mon Sep 17 00:00:00 2001 1From 40fd7506c85fcb799dedb54d4bce3118a56078cc Mon Sep 17 00:00:00 2001
2From: Benjamin Tissoires <benjamin.tissoires@gmail.com> 2From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
3Date: Fri, 23 Dec 2011 15:41:00 +0100 3Date: Fri, 23 Dec 2011 15:41:00 +0100
4Subject: [PATCH 087/130] HID: multitouch: add support for 3M 32" 4Subject: [PATCH 087/129] HID: multitouch: add support for 3M 32"
5 5
6commit c4fad877cd0efb51d8180ae2eaa791c99c92051c upstream. 6commit c4fad877cd0efb51d8180ae2eaa791c99c92051c upstream.
7 7
@@ -41,5 +41,5 @@ index 7f83024..4a63dee 100644
41 /* ActionStar panels */ 41 /* ActionStar panels */
42 { .driver_data = MT_CLS_DEFAULT, 42 { .driver_data = MT_CLS_DEFAULT,
43-- 43--
441.7.9.4 441.7.9.5
45 45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch
index 666029c3..8d2bfef5 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch
@@ -1,7 +1,7 @@
1From 8b47318c07c10fa562d0e62a9d1b5d89d5338aa1 Mon Sep 17 00:00:00 2001 1From 7d63e2bd6f004a4c99c40f9768efe4fa3bef6d28 Mon Sep 17 00:00:00 2001
2From: Masatoshi Hoshikawa <hoshikawa@xiroku.com> 2From: Masatoshi Hoshikawa <hoshikawa@xiroku.com>
3Date: Thu, 5 Jan 2012 11:53:46 +0900 3Date: Thu, 5 Jan 2012 11:53:46 +0900
4Subject: [PATCH 088/130] HID: hid-multitouch: add support 9 new Xiroku 4Subject: [PATCH 088/129] HID: hid-multitouch: add support 9 new Xiroku
5 devices 5 devices
6 6
7commit 11576c6114c3b6505aea2e0c988bedb856a0e20c upstream. 7commit 11576c6114c3b6505aea2e0c988bedb856a0e20c upstream.
@@ -113,5 +113,5 @@ index 4a63dee..995fc4c 100644
113 }; 113 };
114 MODULE_DEVICE_TABLE(hid, mt_devices); 114 MODULE_DEVICE_TABLE(hid, mt_devices);
115-- 115--
1161.7.9.4 1161.7.9.5
117 117
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch
index 1bd7ad2e..94a3da33 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch
@@ -1,7 +1,7 @@
1From 5f8cae871c99479c79aa493512b31ad830e8eaaa Mon Sep 17 00:00:00 2001 1From 36934c4efd11c4f65dd956b2a6649d99ccf5bd86 Mon Sep 17 00:00:00 2001
2From: Martin Schwidefsky <schwidefsky@de.ibm.com> 2From: Martin Schwidefsky <schwidefsky@de.ibm.com>
3Date: Thu, 15 Dec 2011 14:56:10 +0100 3Date: Thu, 15 Dec 2011 14:56:10 +0100
4Subject: [PATCH 089/130] fix cputime overflow in uptime_proc_show 4Subject: [PATCH 089/129] fix cputime overflow in uptime_proc_show
5 5
6commit c3e0ef9a298e028a82ada28101ccd5cf64d209ee upstream. 6commit c3e0ef9a298e028a82ada28101ccd5cf64d209ee upstream.
7 7
@@ -45,5 +45,5 @@ index 766b1d4..29166ec 100644
45 (unsigned long) uptime.tv_sec, 45 (unsigned long) uptime.tv_sec,
46 (uptime.tv_nsec / (NSEC_PER_SEC / 100)), 46 (uptime.tv_nsec / (NSEC_PER_SEC / 100)),
47-- 47--
481.7.9.4 481.7.9.5
49 49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch
index 02ee9360..e9a2e707 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch
@@ -1,7 +1,7 @@
1From fd9b7416ae26e584935f0a1fdf215fb318c54b07 Mon Sep 17 00:00:00 2001 1From 151de2f79ddb7f437ada87d5f204be82db004f9d Mon Sep 17 00:00:00 2001
2From: Paolo Bonzini <pbonzini@redhat.com> 2From: Paolo Bonzini <pbonzini@redhat.com>
3Date: Thu, 12 Jan 2012 16:01:27 +0100 3Date: Thu, 12 Jan 2012 16:01:27 +0100
4Subject: [PATCH 090/130] block: add and use scsi_blk_cmd_ioctl 4Subject: [PATCH 090/129] block: add and use scsi_blk_cmd_ioctl
5 5
6commit 577ebb374c78314ac4617242f509e2f5e7156649 upstream. 6commit 577ebb374c78314ac4617242f509e2f5e7156649 upstream.
7 7
@@ -162,5 +162,5 @@ index 94acd81..ca7b869 100644
162 unsigned int, void __user *); 162 unsigned int, void __user *);
163 extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, 163 extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,
164-- 164--
1651.7.9.4 1651.7.9.5
166 166
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch
index 96a4a599..1fa4e50c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch
@@ -1,7 +1,7 @@
1From 5c9da4628ea28104cb0ec862b8564e413e7615db Mon Sep 17 00:00:00 2001 1From 8dbedb00985bf3ed9848b179a45bb399a733d311 Mon Sep 17 00:00:00 2001
2From: Paolo Bonzini <pbonzini@redhat.com> 2From: Paolo Bonzini <pbonzini@redhat.com>
3Date: Thu, 12 Jan 2012 16:01:28 +0100 3Date: Thu, 12 Jan 2012 16:01:28 +0100
4Subject: [PATCH 091/130] block: fail SCSI passthrough ioctls on partition 4Subject: [PATCH 091/129] block: fail SCSI passthrough ioctls on partition
5 devices 5 devices
6 6
7commit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream. 7commit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream.
@@ -162,5 +162,5 @@ index ca7b869..0ed1eb0 100644
162 unsigned int, void __user *); 162 unsigned int, void __user *);
163 extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, 163 extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
164-- 164--
1651.7.9.4 1651.7.9.5
166 166
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch
index de870c20..044086f3 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch
@@ -1,7 +1,7 @@
1From 8b2ef9bc1880287a083605e630413a47e3a2f436 Mon Sep 17 00:00:00 2001 1From 3d35ea93b3f19f86a464814e7b59464ec3832e9c Mon Sep 17 00:00:00 2001
2From: Paolo Bonzini <pbonzini@redhat.com> 2From: Paolo Bonzini <pbonzini@redhat.com>
3Date: Thu, 12 Jan 2012 16:01:29 +0100 3Date: Thu, 12 Jan 2012 16:01:29 +0100
4Subject: [PATCH 092/130] dm: do not forward ioctls from logical volumes to 4Subject: [PATCH 092/129] dm: do not forward ioctls from logical volumes to
5 the underlying device 5 the underlying device
6 6
7commit ec8013beddd717d1740cfefb1a9b900deef85462 upstream. 7commit ec8013beddd717d1740cfefb1a9b900deef85462 upstream.
@@ -86,5 +86,5 @@ index 5e0090e..801d92d 100644
86 } 86 }
87 87
88-- 88--
891.7.9.4 891.7.9.5
90 90
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch
index 534e2e03..5c2c5661 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch
@@ -1,7 +1,7 @@
1From 7d09634d53fa1f102121d718ca837ebae0fdce18 Mon Sep 17 00:00:00 2001 1From b1eff256d4110a894a3a70a224d3581136645ada Mon Sep 17 00:00:00 2001
2From: Linus Torvalds <torvalds@linux-foundation.org> 2From: Linus Torvalds <torvalds@linux-foundation.org>
3Date: Tue, 17 Jan 2012 15:21:19 -0800 3Date: Tue, 17 Jan 2012 15:21:19 -0800
4Subject: [PATCH 093/130] proc: clean up and fix /proc/<pid>/mem handling 4Subject: [PATCH 093/129] proc: clean up and fix /proc/<pid>/mem handling
5MIME-Version: 1.0 5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8 6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit 7Content-Transfer-Encoding: 8bit
@@ -267,5 +267,5 @@ index 851ba3d..1fc1dca 100644
267 267
268 static ssize_t environ_read(struct file *file, char __user *buf, 268 static ssize_t environ_read(struct file *file, char __user *buf,
269-- 269--
2701.7.9.4 2701.7.9.5
271 271
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch
index a22e6a5e..92722cf2 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch
@@ -1,7 +1,7 @@
1From 718c5470bcef49ad7edc9674a4e96a222a2f4512 Mon Sep 17 00:00:00 2001 1From a8cd5ec584f74044ccca71a50312fac4e69f4d64 Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com> 2From: David Henningsson <david.henningsson@canonical.com>
3Date: Thu, 12 Jan 2012 16:31:14 +0100 3Date: Thu, 12 Jan 2012 16:31:14 +0100
4Subject: [PATCH 094/130] ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1 4Subject: [PATCH 094/129] ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1
5 5
6commit b01de4fb40137fbda7530550ff0cd37171dafb0c upstream. 6commit b01de4fb40137fbda7530550ff0cd37171dafb0c upstream.
7 7
@@ -31,5 +31,5 @@ index c2f79e6..5b2b75b 100644
31 SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB), 31 SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB),
32 SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), 32 SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB),
33-- 33--
341.7.9.4 341.7.9.5
35 35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch
index 670db94b..5e1651fe 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch
@@ -1,7 +1,7 @@
1From 569face0953213dc1e6f92c6371d3246effc9404 Mon Sep 17 00:00:00 2001 1From 142a4939e76aa02d8e2d8338a63dabf59bc83f1b Mon Sep 17 00:00:00 2001
2From: Clemens Ladisch <clemens@ladisch.de> 2From: Clemens Ladisch <clemens@ladisch.de>
3Date: Sat, 14 Jan 2012 16:42:24 +0100 3Date: Sat, 14 Jan 2012 16:42:24 +0100
4Subject: [PATCH 095/130] ALSA: virtuoso: Xonar DS: fix polarity of front 4Subject: [PATCH 095/129] ALSA: virtuoso: Xonar DS: fix polarity of front
5 output 5 output
6 6
7commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream. 7commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream.
@@ -33,5 +33,5 @@ index 42d1ab1..915546a 100644
33 WM8776_PL_LEFT_LEFT | WM8776_PL_RIGHT_RIGHT); 33 WM8776_PL_LEFT_LEFT | WM8776_PL_RIGHT_RIGHT);
34 wm8776_write(chip, WM8776_DACMUTE, chip->dac_mute ? WM8776_DMUTE : 0); 34 wm8776_write(chip, WM8776_DACMUTE, chip->dac_mute ? WM8776_DMUTE : 0);
35-- 35--
361.7.9.4 361.7.9.5
37 37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch
index 82d8935c..6bad4a43 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch
@@ -1,7 +1,7 @@
1From d790354ebeffb41bfe1fb34572c258a7a5fdb475 Mon Sep 17 00:00:00 2001 1From c46905cc61a1b5ff0500d15d79ba8110283e6c58 Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com> 2From: David Henningsson <david.henningsson@canonical.com>
3Date: Mon, 16 Jan 2012 10:52:20 +0100 3Date: Mon, 16 Jan 2012 10:52:20 +0100
4Subject: [PATCH 096/130] ALSA: HDA: Fix internal microphone on Dell Studio 16 4Subject: [PATCH 096/129] ALSA: HDA: Fix internal microphone on Dell Studio 16
5 XPS 1645 5 XPS 1645
6 6
7commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream. 7commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream.
@@ -32,5 +32,5 @@ index a87b260..f3c73a9 100644
32 "Dell Studio 1558", STAC_DELL_M6_DMIC), 32 "Dell Studio 1558", STAC_DELL_M6_DMIC),
33 {} /* terminator */ 33 {} /* terminator */
34-- 34--
351.7.9.4 351.7.9.5
36 36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch
index fba28aac..3393f768 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch
@@ -1,7 +1,7 @@
1From b85512a847012899a22246572d01a7d223bd3222 Mon Sep 17 00:00:00 2001 1From df8b89ac669c66d219a762da1ba79151acce2bf1 Mon Sep 17 00:00:00 2001
2From: Tetsuo Handa <from-tomoyo-users-en@I-love.SAKURA.ne.jp> 2From: Tetsuo Handa <from-tomoyo-users-en@I-love.SAKURA.ne.jp>
3Date: Sun, 15 Jan 2012 11:05:59 +0900 3Date: Sun, 15 Jan 2012 11:05:59 +0900
4Subject: [PATCH 097/130] TOMOYO: Accept \000 as a valid character. 4Subject: [PATCH 097/129] TOMOYO: Accept \000 as a valid character.
5 5
6commit 25add8cf99c9ec8b8dc0acd8b9241e963fc0d29c upstream. 6commit 25add8cf99c9ec8b8dc0acd8b9241e963fc0d29c upstream.
7 7
@@ -39,5 +39,5 @@ index 4a9b4b2..867558c 100644
39 } 39 }
40 } 40 }
41-- 41--
421.7.9.4 421.7.9.5
43 43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch
index d7a7611d..410dc4ff 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch
@@ -1,7 +1,7 @@
1From ea9646e5ea87fd6140ed54f3b09ca46475ce6a2e Mon Sep 17 00:00:00 2001 1From 0e193a44b182c4d14fd4ec0eda63e1cba9e4a0a7 Mon Sep 17 00:00:00 2001
2From: Thomas Renninger <trenn@suse.de> 2From: Thomas Renninger <trenn@suse.de>
3Date: Sun, 4 Dec 2011 22:17:29 +0100 3Date: Sun, 4 Dec 2011 22:17:29 +0100
4Subject: [PATCH 098/130] intel idle: Make idle driver more robust 4Subject: [PATCH 098/129] intel idle: Make idle driver more robust
5 5
6commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream. 6commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream.
7 7
@@ -49,5 +49,5 @@ index 5d2f8e1..1dafcc3 100644
49 49
50 pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates); 50 pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates);
51-- 51--
521.7.9.4 521.7.9.5
53 53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch
index e6b16977..cbebf3b7 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch
@@ -1,7 +1,7 @@
1From 6fc773be070e8390d544439896111359f7ad5d5e Mon Sep 17 00:00:00 2001 1From c8fa4b79449fe6d516847fc308c7126e65d5eec1 Mon Sep 17 00:00:00 2001
2From: Shaohua Li <shaohua.li@intel.com> 2From: Shaohua Li <shaohua.li@intel.com>
3Date: Tue, 10 Jan 2012 15:48:19 -0800 3Date: Tue, 10 Jan 2012 15:48:19 -0800
4Subject: [PATCH 099/130] intel_idle: fix API misuse 4Subject: [PATCH 099/129] intel_idle: fix API misuse
5 5
6commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream. 6commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream.
7 7
@@ -52,5 +52,5 @@ index 1dafcc3..5b39216 100644
52 } 52 }
53 53
54-- 54--
551.7.9.4 551.7.9.5
56 56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch
index 0517a288..5f6eb014 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch
@@ -1,7 +1,7 @@
1From 728b80c9d9c824758d199b30badeede283997288 Mon Sep 17 00:00:00 2001 1From 8f15cb284e8a758b4040fd87729b365bb7805dbb Mon Sep 17 00:00:00 2001
2From: Kurt Garloff <kurt@garloff.de> 2From: Kurt Garloff <kurt@garloff.de>
3Date: Tue, 17 Jan 2012 04:18:02 -0500 3Date: Tue, 17 Jan 2012 04:18:02 -0500
4Subject: [PATCH 100/130] ACPI: Store SRAT table revision 4Subject: [PATCH 100/129] ACPI: Store SRAT table revision
5 5
6commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream. 6commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream.
7 7
@@ -62,5 +62,5 @@ index 1739726..451823c 100644
62 #endif /* CONFIG_ACPI_NUMA */ 62 #endif /* CONFIG_ACPI_NUMA */
63 #endif /* __ACP_NUMA_H */ 63 #endif /* __ACP_NUMA_H */
64-- 64--
651.7.9.4 651.7.9.5
66 66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch
index e388bd86..22098603 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch
@@ -1,7 +1,7 @@
1From a3f5e6cdc32940c2bb38883fbf59310e3f47562b Mon Sep 17 00:00:00 2001 1From 63a87105c14ecf9a81f741a3864b775901237f53 Mon Sep 17 00:00:00 2001
2From: Kurt Garloff <kurt@garloff.de> 2From: Kurt Garloff <kurt@garloff.de>
3Date: Tue, 17 Jan 2012 04:20:31 -0500 3Date: Tue, 17 Jan 2012 04:20:31 -0500
4Subject: [PATCH 101/130] ACPI, x86: Use SRAT table rev to use 8bit or 32bit 4Subject: [PATCH 101/129] ACPI, x86: Use SRAT table rev to use 8bit or 32bit
5 PXM fields (x86/x86-64) 5 PXM fields (x86/x86-64)
6 6
7commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream. 7commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream.
@@ -46,5 +46,5 @@ index 81dbfde..7efd0c6 100644
46 if (node < 0) { 46 if (node < 0) {
47 printk(KERN_ERR "SRAT: Too many proximity domains.\n"); 47 printk(KERN_ERR "SRAT: Too many proximity domains.\n");
48-- 48--
491.7.9.4 491.7.9.5
50 50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch
index 9db21e76..9aa68af7 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch
@@ -1,7 +1,7 @@
1From 4e2cabc871e43094be5d5e2968cf2759bfc42446 Mon Sep 17 00:00:00 2001 1From d9beea03fc99ab5df65264a47802449c6630a8bf Mon Sep 17 00:00:00 2001
2From: Kurt Garloff <kurt@garloff.de> 2From: Kurt Garloff <kurt@garloff.de>
3Date: Tue, 17 Jan 2012 04:21:49 -0500 3Date: Tue, 17 Jan 2012 04:21:49 -0500
4Subject: [PATCH 102/130] ACPI, ia64: Use SRAT table rev to use 8bit or 4Subject: [PATCH 102/129] ACPI, ia64: Use SRAT table rev to use 8bit or
5 16/32bit PXM fields (ia64) 5 16/32bit PXM fields (ia64)
6 6
7commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream. 7commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream.
@@ -62,5 +62,5 @@ index bfb4d01..5207035 100644
62 62
63 return pxm; 63 return pxm;
64-- 64--
651.7.9.4 651.7.9.5
66 66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch
index 28e650a1..66d96729 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch
@@ -1,7 +1,7 @@
1From 1d0cc972d03315012d34ed57d5929597fe16513d Mon Sep 17 00:00:00 2001 1From 0279b040f1dafa5f545c9ef255b39a99f9490750 Mon Sep 17 00:00:00 2001
2From: Lin Ming <ming.m.lin@intel.com> 2From: Lin Ming <ming.m.lin@intel.com>
3Date: Tue, 29 Nov 2011 22:13:35 +0800 3Date: Tue, 29 Nov 2011 22:13:35 +0800
4Subject: [PATCH 103/130] ACPICA: Put back the call to 4Subject: [PATCH 103/129] ACPICA: Put back the call to
5 acpi_os_validate_address 5 acpi_os_validate_address
6 6
7commit da4d8b287abe783d30e968155614531a0937d090 upstream. 7commit da4d8b287abe783d30e968155614531a0937d090 upstream.
@@ -55,5 +55,5 @@ index 8c7b997..42163d8 100644
55 return_ACPI_STATUS(status); 55 return_ACPI_STATUS(status);
56 } 56 }
57-- 57--
581.7.9.4 581.7.9.5
59 59
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch
index 9a2227c9..edd3fc36 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch
@@ -1,7 +1,7 @@
1From 9a808d369e4ff2dea161f009f81fa4daf32218ad Mon Sep 17 00:00:00 2001 1From 639adc94e82ece74d00c447a2e5d9180bdfd5355 Mon Sep 17 00:00:00 2001
2From: Lin Ming <ming.m.lin@intel.com> 2From: Lin Ming <ming.m.lin@intel.com>
3Date: Tue, 13 Dec 2011 09:36:03 +0800 3Date: Tue, 13 Dec 2011 09:36:03 +0800
4Subject: [PATCH 104/130] ACPI: processor: fix acpi_get_cpuid for UP processor 4Subject: [PATCH 104/129] ACPI: processor: fix acpi_get_cpuid for UP processor
5 5
6commit d640113fe80e45ebd4a5b420b220d3f6bf37f682 upstream. 6commit d640113fe80e45ebd4a5b420b220d3f6bf37f682 upstream.
7 7
@@ -71,5 +71,5 @@ index 3a0428e..c850de4 100644
71 #ifdef CONFIG_SMP 71 #ifdef CONFIG_SMP
72 for_each_possible_cpu(i) { 72 for_each_possible_cpu(i) {
73-- 73--
741.7.9.4 741.7.9.5
75 75
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch
index 4d3dd26b..e91b3609 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch
@@ -1,7 +1,7 @@
1From 2d67bed9e2fee02c9cca9582ed2719394bcbc124 Mon Sep 17 00:00:00 2001 1From af1ad4d4ecbbfca6424c1f8fa40e1aec8fae4836 Mon Sep 17 00:00:00 2001
2From: Stratos Psomadakis <psomas@gentoo.org> 2From: Stratos Psomadakis <psomas@gentoo.org>
3Date: Sun, 4 Dec 2011 02:23:54 +0200 3Date: Sun, 4 Dec 2011 02:23:54 +0200
4Subject: [PATCH 105/130] sym53c8xx: Fix NULL pointer dereference in 4Subject: [PATCH 105/129] sym53c8xx: Fix NULL pointer dereference in
5 slave_destroy 5 slave_destroy
6 6
7commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream. 7commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream.
@@ -33,5 +33,5 @@ index b4543f5..36d1ed7 100644
33 33
34 if (lp->busy_itlq || lp->busy_itl) { 34 if (lp->busy_itlq || lp->busy_itl) {
35-- 35--
361.7.9.4 361.7.9.5
37 37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch
index 4d00f5ec..22c0c37c 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch
@@ -1,7 +1,7 @@
1From ce97634c9e0f76ad9e01acc6bc4d5d7c92e2cb52 Mon Sep 17 00:00:00 2001 1From 860d8eb163f67712acbcc072e5362e3ca01ef2b8 Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com> 2From: Roland Dreier <roland@purestorage.com>
3Date: Tue, 6 Dec 2011 10:02:09 -0800 3Date: Tue, 6 Dec 2011 10:02:09 -0800
4Subject: [PATCH 106/130] target: Set response format in INQUIRY response 4Subject: [PATCH 106/129] target: Set response format in INQUIRY response
5 5
6commit ce136176fea522fc8f4c16dcae7e8ed1d890ca39 upstream. 6commit ce136176fea522fc8f4c16dcae7e8ed1d890ca39 upstream.
7 7
@@ -40,5 +40,5 @@ index 831468b..2e8c1be 100644
40 */ 40 */
41 if (dev->se_sub_dev->t10_alua.alua_type == SPC3_ALUA_EMULATED) 41 if (dev->se_sub_dev->t10_alua.alua_type == SPC3_ALUA_EMULATED)
42-- 42--
431.7.9.4 431.7.9.5
44 44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch
index 89cf1cb9..2d2bff53 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch
@@ -1,7 +1,7 @@
1From 02773707d85c4c5d94d7e75eec75a111dae1bf8b Mon Sep 17 00:00:00 2001 1From ae86c4561c40068ef81f484829a47512c99853d0 Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com> 2From: Roland Dreier <roland@purestorage.com>
3Date: Tue, 13 Dec 2011 14:55:33 -0800 3Date: Tue, 13 Dec 2011 14:55:33 -0800
4Subject: [PATCH 107/130] target: Set additional sense length field in sense 4Subject: [PATCH 107/129] target: Set additional sense length field in sense
5 data 5 data
6 6
7commit 895f3022523361e9b383cf48f51feb1f7d5e7e53 upstream. 7commit 895f3022523361e9b383cf48f51feb1f7d5e7e53 upstream.
@@ -173,5 +173,5 @@ index 6873c7d..a79886c 100644
173 #define SPC_ASCQ_KEY_OFFSET 13 173 #define SPC_ASCQ_KEY_OFFSET 13
174 #define TRANSPORT_IQN_LEN 224 174 #define TRANSPORT_IQN_LEN 224
175-- 175--
1761.7.9.4 1761.7.9.5
177 177
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch
index 0a95caae..1d681ad2 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch
@@ -1,7 +1,7 @@
1From f247747caad5d93e854a4ebab125e97e119a7c94 Mon Sep 17 00:00:00 2001 1From 744b53e5115a140039ef4e7834bb84797b4db37e Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> 2From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
3Date: Fri, 13 Jan 2012 23:58:38 +0100 3Date: Fri, 13 Jan 2012 23:58:38 +0100
4Subject: [PATCH 108/130] bcma: invalidate the mapped core over suspend/resume 4Subject: [PATCH 108/129] bcma: invalidate the mapped core over suspend/resume
5MIME-Version: 1.0 5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8 6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit 7Content-Transfer-Encoding: 8bit
@@ -40,5 +40,5 @@ index 990f5a8..48e06be 100644
40 } 40 }
41 41
42-- 42--
431.7.9.4 431.7.9.5
44 44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch
index 68e70fa7..281a3800 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch
@@ -1,7 +1,7 @@
1From eba71ad513d0aaab1592c2a0f96689fb99e84358 Mon Sep 17 00:00:00 2001 1From 3fcecb64e1ce21bda3d69718f0fefa1ed0d7f06b Mon Sep 17 00:00:00 2001
2From: Miroslav Slugen <thunder.mmm@gmail.com> 2From: Miroslav Slugen <thunder.mmm@gmail.com>
3Date: Sun, 11 Dec 2011 18:57:58 -0300 3Date: Sun, 11 Dec 2011 18:57:58 -0300
4Subject: [PATCH 109/130] cx23885-dvb: check if dvb_attach() succeded 4Subject: [PATCH 109/129] cx23885-dvb: check if dvb_attach() succeded
5 5
6commit a7c8aadad39428b64d26c3971d967f8314e2397d upstream. 6commit a7c8aadad39428b64d26c3971d967f8314e2397d upstream.
7 7
@@ -32,5 +32,5 @@ index bcb45be..f0482b2 100644
32 break; 32 break;
33 case CX23885_BOARD_TBS_6920: 33 case CX23885_BOARD_TBS_6920:
34-- 34--
351.7.9.4 351.7.9.5
36 36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch
index 41af993c..3bb70b80 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch
@@ -1,7 +1,7 @@
1From 4cdd59d625b7597263d5bf1420baf29dda1dbcf9 Mon Sep 17 00:00:00 2001 1From dedbeeab016e8baaeed49bae9f4a0dab47da8a54 Mon Sep 17 00:00:00 2001
2From: Miroslav Slugen <thunder.mmm@gmail.com> 2From: Miroslav Slugen <thunder.mmm@gmail.com>
3Date: Sun, 11 Dec 2011 19:00:06 -0300 3Date: Sun, 11 Dec 2011 19:00:06 -0300
4Subject: [PATCH 110/130] cx88: fix: don't duplicate xc4000 entry for radio 4Subject: [PATCH 110/129] cx88: fix: don't duplicate xc4000 entry for radio
5 5
6commit b6854e3f31402476bcc9d2f41570389fa491de17 upstream. 6commit b6854e3f31402476bcc9d2f41570389fa491de17 upstream.
7 7
@@ -91,5 +91,5 @@ index 0d719fa..3929d93 100644
91 * GPIO 91 * GPIO
92 * 2: 1: mute audio 92 * 2: 1: mute audio
93-- 93--
941.7.9.4 941.7.9.5
95 95
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch
index 8eacbcac..ca034602 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch
@@ -1,7 +1,7 @@
1From 9f3c2f09e3c5ffbbbb98cb248b423cbdd8a86a9e Mon Sep 17 00:00:00 2001 1From 5af871e87d37ab57459c6c7244aa4837993ee9eb Mon Sep 17 00:00:00 2001
2From: Miroslav Slugen <thunder.mmm@gmail.com> 2From: Miroslav Slugen <thunder.mmm@gmail.com>
3Date: Sun, 11 Dec 2011 18:47:32 -0300 3Date: Sun, 11 Dec 2011 18:47:32 -0300
4Subject: [PATCH 111/130] tuner: Fix numberspace conflict between xc4000 and 4Subject: [PATCH 111/129] tuner: Fix numberspace conflict between xc4000 and
5 pti 5nf05 tuners 5 pti 5nf05 tuners
6 6
7commit cd4ca7afc61d3b18fcd635002459fb6b1d701099 upstream. 7commit cd4ca7afc61d3b18fcd635002459fb6b1d701099 upstream.
@@ -38,5 +38,5 @@ index 89c290b..29e1920 100644
38 #define TDA9887_PRESENT (1<<0) 38 #define TDA9887_PRESENT (1<<0)
39 #define TDA9887_PORT1_INACTIVE (1<<1) 39 #define TDA9887_PORT1_INACTIVE (1<<1)
40-- 40--
411.7.9.4 411.7.9.5
42 42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch
index 484a59ac..fa68a226 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch
@@ -1,7 +1,7 @@
1From f346bd3ef355be96371b53ec2e93f072618bdce7 Mon Sep 17 00:00:00 2001 1From 1c99223cf33c02c8f79d74bda8a0f4352bd4d7f6 Mon Sep 17 00:00:00 2001
2From: Steven Rostedt <srostedt@redhat.com> 2From: Steven Rostedt <srostedt@redhat.com>
3Date: Fri, 13 Jan 2012 21:40:59 -0500 3Date: Fri, 13 Jan 2012 21:40:59 -0500
4Subject: [PATCH 112/130] tracepoints/module: Fix disabling tracepoints with 4Subject: [PATCH 112/129] tracepoints/module: Fix disabling tracepoints with
5 taint CRAP or OOT 5 taint CRAP or OOT
6 6
7commit c10076c4304083af15a41f6bc5e657e781c1f9a6 upstream. 7commit c10076c4304083af15a41f6bc5e657e781c1f9a6 upstream.
@@ -46,5 +46,5 @@ index db110b8..f1539de 100644
46 mutex_lock(&tracepoints_mutex); 46 mutex_lock(&tracepoints_mutex);
47 tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL); 47 tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL);
48-- 48--
491.7.9.4 491.7.9.5
50 50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch
index 29557a49..aec34657 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch
@@ -1,4 +1,4 @@
1From ec2a416f6ce2e5b896074a6e8c86fda4d1d21466 Mon Sep 17 00:00:00 2001 1From ebde7b91a72ac0cc014d021051f8a46a786dbb00 Mon Sep 17 00:00:00 2001
2From: Cliff Wickman <cpw@sgi.com> 2From: Cliff Wickman <cpw@sgi.com>
3Date: Mon, 16 Jan 2012 15:17:50 -0600 3Date: Mon, 16 Jan 2012 15:17:50 -0600
4Subject: [PATCH 113/129] x86/UV2: Fix new UV2 hardware by using native UV2 4Subject: [PATCH 113/129] x86/UV2: Fix new UV2 hardware by using native UV2
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch
index a7502511..02118c96 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch
@@ -1,4 +1,4 @@
1From 0b3a1f5aefb71777fec89809de87c49b917a88e7 Mon Sep 17 00:00:00 2001 1From dcca45052472bcbd331d0451777cb947588e1dd5 Mon Sep 17 00:00:00 2001
2From: Cliff Wickman <cpw@sgi.com> 2From: Cliff Wickman <cpw@sgi.com>
3Date: Mon, 16 Jan 2012 15:18:48 -0600 3Date: Mon, 16 Jan 2012 15:18:48 -0600
4Subject: [PATCH 114/129] x86/UV2: Fix BAU destination timeout initialization 4Subject: [PATCH 114/129] x86/UV2: Fix BAU destination timeout initialization
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch
index bfcab134..11d610cf 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch
@@ -1,4 +1,4 @@
1From d1eaa067ea8545101d57f6d484519722ee8c3783 Mon Sep 17 00:00:00 2001 1From 3ebb4a034dca1cd312f42c9ff1ff47c873f211b6 Mon Sep 17 00:00:00 2001
2From: Cliff Wickman <cpw@sgi.com> 2From: Cliff Wickman <cpw@sgi.com>
3Date: Mon, 16 Jan 2012 15:19:47 -0600 3Date: Mon, 16 Jan 2012 15:19:47 -0600
4Subject: [PATCH 115/129] x86/UV2: Work around BAU bug 4Subject: [PATCH 115/129] x86/UV2: Work around BAU bug
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch
index bde74d7f..33c20287 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch
@@ -1,4 +1,4 @@
1From 28cfb4fe93728e07bee3b360682f3a4b2ca6f1f0 Mon Sep 17 00:00:00 2001 1From 36fed113f3b66718282151fa962f644e793520f5 Mon Sep 17 00:00:00 2001
2From: Felix Fietkau <nbd@openwrt.org> 2From: Felix Fietkau <nbd@openwrt.org>
3Date: Sat, 14 Jan 2012 15:08:34 +0100 3Date: Sat, 14 Jan 2012 15:08:34 +0100
4Subject: [PATCH 116/129] ath9k_hw: fix interpretation of the rx KeyMiss flag 4Subject: [PATCH 116/129] ath9k_hw: fix interpretation of the rx KeyMiss flag
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch
index 2911cede..9fc97d72 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch
@@ -1,4 +1,4 @@
1From 021083c5844b20210ced59ad5b760d2a7cb97cd2 Mon Sep 17 00:00:00 2001 1From a84e0b6f2dfb09db9a5cb66bb913f619d8973a62 Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com> 2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Fri, 13 Jan 2012 12:59:32 +0100 3Date: Fri, 13 Jan 2012 12:59:32 +0100
4Subject: [PATCH 117/129] rt2800pci: fix spurious interrupts generation 4Subject: [PATCH 117/129] rt2800pci: fix spurious interrupts generation
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch
index fda910b7..6a0feaa8 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch
@@ -1,4 +1,4 @@
1From 40713843ccb84ed06d4799763c3832376d6cd5cb Mon Sep 17 00:00:00 2001 1From 1075b6106024e51af7a5108626091322d2e91710 Mon Sep 17 00:00:00 2001
2From: Dave Chinner <dchinner@redhat.com> 2From: Dave Chinner <dchinner@redhat.com>
3Date: Wed, 18 Jan 2012 14:41:45 -0600 3Date: Wed, 18 Jan 2012 14:41:45 -0600
4Subject: [PATCH 118/129] xfs: fix endian conversion issue in discard code 4Subject: [PATCH 118/129] xfs: fix endian conversion issue in discard code
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch
index 839253c1..15391676 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch
@@ -1,4 +1,4 @@
1From 072d0e473d1a1d4adc67a7d39be9f71fea4fadad Mon Sep 17 00:00:00 2001 1From d73358012ed5ac74a1f51fa250d221be5e3ca304 Mon Sep 17 00:00:00 2001
2From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com> 2From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
3Date: Mon, 26 Sep 2011 16:16:23 +0900 3Date: Mon, 26 Sep 2011 16:16:23 +0900
4Subject: [PATCH 119/129] i2c-eg20t: modified the setting of transfer rate. 4Subject: [PATCH 119/129] i2c-eg20t: modified the setting of transfer rate.
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch
index 32a8d963..7926f229 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch
@@ -1,4 +1,4 @@
1From 9ed6d95eba2ead578e1fa4e5be8cb16b185c8c97 Mon Sep 17 00:00:00 2001 1From 9391ba8a34c0947af9b6c756387fc8bf70959648 Mon Sep 17 00:00:00 2001
2From: Dan Rosenberg <drosenberg@vsecurity.com> 2From: Dan Rosenberg <drosenberg@vsecurity.com>
3Date: Fri, 20 Jan 2012 14:34:27 -0800 3Date: Fri, 20 Jan 2012 14:34:27 -0800
4Subject: [PATCH 120/129] score: fix off-by-one index into syscall table 4Subject: [PATCH 120/129] score: fix off-by-one index into syscall table
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch
index fb4af96b..f857485e 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch
@@ -1,4 +1,4 @@
1From ac9426f8233d76fd80412576fb53a26a7b1bd7ea Mon Sep 17 00:00:00 2001 1From 95b45505920a18fb705ad35e9144aaf94ea01421 Mon Sep 17 00:00:00 2001
2From: Jeff Layton <jlayton@redhat.com> 2From: Jeff Layton <jlayton@redhat.com>
3Date: Tue, 17 Jan 2012 16:08:51 -0500 3Date: Tue, 17 Jan 2012 16:08:51 -0500
4Subject: [PATCH 121/129] cifs: lower default wsize when unix extensions are 4Subject: [PATCH 121/129] cifs: lower default wsize when unix extensions are
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch
index 3d055c3c..ff829958 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch
@@ -1,4 +1,4 @@
1From d159bea43eb9f0ba806a4ddc7e03dbb218b88136 Mon Sep 17 00:00:00 2001 1From b15b8b5f7a9cfc20c2e68ba4a6a402ff44bb6c4a Mon Sep 17 00:00:00 2001
2From: Ananth N Mavinakayanahalli <ananth@in.ibm.com> 2From: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
3Date: Fri, 20 Jan 2012 14:34:04 -0800 3Date: Fri, 20 Jan 2012 14:34:04 -0800
4Subject: [PATCH 122/129] kprobes: initialize before using a hlist 4Subject: [PATCH 122/129] kprobes: initialize before using a hlist
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch
index 23678bde..521c3d5d 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch
@@ -1,4 +1,4 @@
1From 1740c878a52dd4afc5b6e927d9b157d6db230184 Mon Sep 17 00:00:00 2001 1From 8077f2d3611dd0c75c64f018c7e01dc2a4948a27 Mon Sep 17 00:00:00 2001
2From: Will Deacon <will.deacon@arm.com> 2From: Will Deacon <will.deacon@arm.com>
3Date: Fri, 20 Jan 2012 14:34:09 -0800 3Date: Fri, 20 Jan 2012 14:34:09 -0800
4Subject: [PATCH 123/129] proc: clear_refs: do not clear reserved pages 4Subject: [PATCH 123/129] proc: clear_refs: do not clear reserved pages
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch
index ca05e3e3..1d4d2f88 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch
@@ -1,4 +1,4 @@
1From ddcb13eadda3bcb23d81672ea705d6bfa313bbf8 Mon Sep 17 00:00:00 2001 1From e4131b26d39c1bf1f739fd09451ade0906252661 Mon Sep 17 00:00:00 2001
2From: Michal Hocko <mhocko@suse.cz> 2From: Michal Hocko <mhocko@suse.cz>
3Date: Fri, 20 Jan 2012 14:33:55 -0800 3Date: Fri, 20 Jan 2012 14:33:55 -0800
4Subject: [PATCH 124/129] mm: fix NULL ptr dereference in 4Subject: [PATCH 124/129] mm: fix NULL ptr dereference in
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch
index a3fffd51..b0cda033 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch
@@ -1,4 +1,4 @@
1From cd3b4541cb6b11e119007268e0890a1a38e68f8e Mon Sep 17 00:00:00 2001 1From 70fd986c5b5171460831de5af79b0d62af90411f Mon Sep 17 00:00:00 2001
2From: Wey-Yi Guy <wey-yi.w.guy@intel.com> 2From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
3Date: Thu, 10 Nov 2011 06:55:04 -0800 3Date: Thu, 10 Nov 2011 06:55:04 -0800
4Subject: [PATCH 125/129] iwlagn: check for SMPS mode 4Subject: [PATCH 125/129] iwlagn: check for SMPS mode
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch
index 7cbd3d8d..b00ae5cf 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch
@@ -1,4 +1,4 @@
1From 98214e3fab80dbfdf54c908de2ae0c9730d6430d Mon Sep 17 00:00:00 2001 1From 2daa9185b2ac519603743cbc902f00633947e878 Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com> 2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Fri, 23 Dec 2011 08:13:50 +0100 3Date: Fri, 23 Dec 2011 08:13:50 +0100
4Subject: [PATCH 126/129] iwlegacy: 3945: fix hw passive scan on radar 4Subject: [PATCH 126/129] iwlegacy: 3945: fix hw passive scan on radar
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch
index 3731f657..dfab7529 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch
@@ -1,4 +1,4 @@
1From 5e2208d9c6ce1c5e57ad5fe56adc5b8f349ce23a Mon Sep 17 00:00:00 2001 1From e74be920e142da39a0824238a5031649fbec2890 Mon Sep 17 00:00:00 2001
2From: Hugh Dickins <hughd@google.com> 2From: Hugh Dickins <hughd@google.com>
3Date: Fri, 20 Jan 2012 14:34:19 -0800 3Date: Fri, 20 Jan 2012 14:34:19 -0800
4Subject: [PATCH 127/129] SHM_UNLOCK: fix long unpreemptible section 4Subject: [PATCH 127/129] SHM_UNLOCK: fix long unpreemptible section
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch
index e7adafc9..70d0feea 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch
@@ -1,4 +1,4 @@
1From 8704b3941de0865d7c11921ee2dd7abbc04a0081 Mon Sep 17 00:00:00 2001 1From 67890984571f0de5f3d975ef1d67643d89d92174 Mon Sep 17 00:00:00 2001
2From: Hugh Dickins <hughd@google.com> 2From: Hugh Dickins <hughd@google.com>
3Date: Fri, 20 Jan 2012 14:34:21 -0800 3Date: Fri, 20 Jan 2012 14:34:21 -0800
4Subject: [PATCH 128/129] SHM_UNLOCK: fix Unevictable pages stranded after 4Subject: [PATCH 128/129] SHM_UNLOCK: fix Unevictable pages stranded after
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch
index f4e3ff56..191a68f4 100644
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch
@@ -1,4 +1,4 @@
1From 8e03b0ed729407fef72578c24148208a079e7f2c Mon Sep 17 00:00:00 2001 1From 9c4bad0da47e7a8597bf0135088e482b1a970ba7 Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@suse.de> 2From: Greg Kroah-Hartman <gregkh@suse.de>
3Date: Wed, 25 Jan 2012 16:39:32 -0800 3Date: Wed, 25 Jan 2012 16:39:32 -0800
4Subject: [PATCH 129/129] Linux 3.2.2 4Subject: [PATCH 129/129] Linux 3.2.2
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch
new file mode 100644
index 00000000..fbb82078
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch
@@ -0,0 +1,68 @@
1From d08904adc2bdce433151a95add376e5446af13de Mon Sep 17 00:00:00 2001
2From: Joerg Roedel <joerg.roedel@amd.com>
3Date: Thu, 12 Apr 2012 14:12:00 +0200
4Subject: [PATCH 01/86] iommu/amd: Add workaround for event log erratum
5
6commit 3d06fca8d2aa3543030e40b95f1d62f9f5a03540 upstream.
7
8Due to a recent erratum it can happen that the head pointer
9of the event-log is updated before the actual event-log
10entry is written. This patch implements the recommended
11workaround.
12
13Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/iommu/amd_iommu.c | 29 +++++++++++++++++++++++------
17 1 file changed, 23 insertions(+), 6 deletions(-)
18
19diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
20index 966a6e7..f1d5408 100644
21--- a/drivers/iommu/amd_iommu.c
22+++ b/drivers/iommu/amd_iommu.c
23@@ -381,12 +381,27 @@ static void dump_command(unsigned long phys_addr)
24
25 static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
26 {
27- u32 *event = __evt;
28- int type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
29- int devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
30- int domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
31- int flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
32- u64 address = (u64)(((u64)event[3]) << 32) | event[2];
33+ int type, devid, domid, flags;
34+ volatile u32 *event = __evt;
35+ int count = 0;
36+ u64 address;
37+
38+retry:
39+ type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
40+ devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
41+ domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
42+ flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
43+ address = (u64)(((u64)event[3]) << 32) | event[2];
44+
45+ if (type == 0) {
46+ /* Did we hit the erratum? */
47+ if (++count == LOOP_TIMEOUT) {
48+ pr_err("AMD-Vi: No event written to event log\n");
49+ return;
50+ }
51+ udelay(1);
52+ goto retry;
53+ }
54
55 printk(KERN_ERR "AMD-Vi: Event logged [");
56
57@@ -439,6 +454,8 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
58 default:
59 printk(KERN_ERR "UNKNOWN type=0x%02x]\n", type);
60 }
61+
62+ memset(__evt, 0, 4 * sizeof(u32));
63 }
64
65 static void iommu_poll_events(struct amd_iommu *iommu)
66--
671.7.9.5
68
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch
new file mode 100644
index 00000000..33c5e4c4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch
@@ -0,0 +1,52 @@
1From 46955a5e45c31c112caee68f0b31b6caac294ce0 Mon Sep 17 00:00:00 2001
2From: Jonas Gorski <jonas.gorski@gmail.com>
3Date: Tue, 15 May 2012 17:47:52 +0200
4Subject: [PATCH 02/86] MIPS: BCM63XX: Add missing include for bcm63xx_gpio.h
5
6commit 442209f31dafef9fde852858e1ce566b675b720d upstream.
7
8bcm63xx_gpio.h uses macros defined in bcm63xx_cpu.h without including it,
9leading to the following build failure:
10
11 CC [M] drivers/mmc/core/cd-gpio.o
12In file included from arch/mips/include/asm/mach-bcm63xx/gpio.h:4:0,
13 from arch/mips/include/asm/gpio.h:4,
14 from include/linux/gpio.h:30,
15 from drivers/mmc/core/cd-gpio.c:12:
16
17arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h: In function 'bcm63xx_gpio_count':
18arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:10:2: error: implicit declaration of function 'bcm63xx_get_cpu_id'
19arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: error: 'BCM6358_CPU_ID' undeclared (first use in this function)
20arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: note: each undeclared identifier is reported only once for each function it appears in
21arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:13:7: error: 'BCM6338_CPU_ID' undeclared (first use in this function)
22arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:15:7: error: 'BCM6345_CPU_ID' undeclared (first use in this function)
23arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:17:7: error: 'BCM6368_CPU_ID' undeclared (first use in this function)
24arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:19:7: error: 'BCM6348_CPU_ID' undeclared (first use in this function)
25
26make[7]: *** [drivers/mmc/core/cd-gpio.o] Error 1
27
28Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
29Cc: linux-mips@linux-mips.org
30Cc: Maxime Bizon <mbizon@freebox.fr>
31Cc: Florian Fainelli <florian@openwrt.org>
32Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
33Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
34---
35 arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 1 +
36 1 file changed, 1 insertion(+)
37
38diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
39index 3999ec0..67d1ce0 100644
40--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
41+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
42@@ -2,6 +2,7 @@
43 #define BCM63XX_GPIO_H
44
45 #include <linux/init.h>
46+#include <bcm63xx_cpu.h>
47
48 int __init bcm63xx_gpio_init(void);
49
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch
new file mode 100644
index 00000000..33f7854a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch
@@ -0,0 +1,152 @@
1From 173ad16c027991780b0eb74f6ad49ae7621647f5 Mon Sep 17 00:00:00 2001
2From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
3Date: Tue, 15 May 2012 10:19:16 -0500
4Subject: [PATCH 03/86] cifs: Include backup intent search flags during
5 searches {try #2)
6
7commit 2608bee744a92d60d15ff4e6e0b913d8b406aedd upstream.
8
9As observed and suggested by Tushar Gosavi...
10
11---------
12readdir calls these function to send TRANS2_FIND_FIRST and
13TRANS2_FIND_NEXT command to the server. The current cifs module is
14not specifying CIFS_SEARCH_BACKUP_SEARCH flag while sending these
15command when backupuid/backupgid is specified. This can be resolved
16by specifying CIFS_SEARCH_BACKUP_SEARCH flag.
17---------
18
19Reported-and-Tested-by: Tushar Gosavi <tugosavi@in.ibm.com>
20Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
21Acked-by: Jeff Layton <jlayton@redhat.com>
22Signed-off-by: Steve French <sfrench@us.ibm.com>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 fs/cifs/cifsproto.h | 6 ++++--
26 fs/cifs/cifssmb.c | 12 +++++-------
27 fs/cifs/readdir.c | 15 +++++++++++++--
28 3 files changed, 22 insertions(+), 11 deletions(-)
29
30diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
31index 6f4e243..26917d3 100644
32--- a/fs/cifs/cifsproto.h
33+++ b/fs/cifs/cifsproto.h
34@@ -184,11 +184,13 @@ extern int CIFSTCon(unsigned int xid, struct cifs_ses *ses,
35
36 extern int CIFSFindFirst(const int xid, struct cifs_tcon *tcon,
37 const char *searchName, const struct nls_table *nls_codepage,
38- __u16 *searchHandle, struct cifs_search_info *psrch_inf,
39+ __u16 *searchHandle, __u16 search_flags,
40+ struct cifs_search_info *psrch_inf,
41 int map, const char dirsep);
42
43 extern int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
44- __u16 searchHandle, struct cifs_search_info *psrch_inf);
45+ __u16 searchHandle, __u16 search_flags,
46+ struct cifs_search_info *psrch_inf);
47
48 extern int CIFSFindClose(const int, struct cifs_tcon *tcon,
49 const __u16 search_handle);
50diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
51index e89803b..6aa7457 100644
52--- a/fs/cifs/cifssmb.c
53+++ b/fs/cifs/cifssmb.c
54@@ -4327,7 +4327,7 @@ int
55 CIFSFindFirst(const int xid, struct cifs_tcon *tcon,
56 const char *searchName,
57 const struct nls_table *nls_codepage,
58- __u16 *pnetfid,
59+ __u16 *pnetfid, __u16 search_flags,
60 struct cifs_search_info *psrch_inf, int remap, const char dirsep)
61 {
62 /* level 257 SMB_ */
63@@ -4399,8 +4399,7 @@ findFirstRetry:
64 cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
65 ATTR_DIRECTORY);
66 pSMB->SearchCount = cpu_to_le16(CIFSMaxBufSize/sizeof(FILE_UNIX_INFO));
67- pSMB->SearchFlags = cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END |
68- CIFS_SEARCH_RETURN_RESUME);
69+ pSMB->SearchFlags = cpu_to_le16(search_flags);
70 pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level);
71
72 /* BB what should we set StorageType to? Does it matter? BB */
73@@ -4470,8 +4469,8 @@ findFirstRetry:
74 return rc;
75 }
76
77-int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
78- __u16 searchHandle, struct cifs_search_info *psrch_inf)
79+int CIFSFindNext(const int xid, struct cifs_tcon *tcon, __u16 searchHandle,
80+ __u16 search_flags, struct cifs_search_info *psrch_inf)
81 {
82 TRANSACTION2_FNEXT_REQ *pSMB = NULL;
83 TRANSACTION2_FNEXT_RSP *pSMBr = NULL;
84@@ -4514,8 +4513,7 @@ int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
85 cpu_to_le16(CIFSMaxBufSize / sizeof(FILE_UNIX_INFO));
86 pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level);
87 pSMB->ResumeKey = psrch_inf->resume_key;
88- pSMB->SearchFlags =
89- cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME);
90+ pSMB->SearchFlags = cpu_to_le16(search_flags);
91
92 name_len = psrch_inf->resume_name_len;
93 params += name_len;
94diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
95index a090bbe..db4a138 100644
96--- a/fs/cifs/readdir.c
97+++ b/fs/cifs/readdir.c
98@@ -219,6 +219,7 @@ int get_symlink_reparse_path(char *full_path, struct cifs_sb_info *cifs_sb,
99
100 static int initiate_cifs_search(const int xid, struct file *file)
101 {
102+ __u16 search_flags;
103 int rc = 0;
104 char *full_path = NULL;
105 struct cifsFileInfo *cifsFile;
106@@ -270,8 +271,12 @@ ffirst_retry:
107 cifsFile->srch_inf.info_level = SMB_FIND_FILE_DIRECTORY_INFO;
108 }
109
110+ search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME;
111+ if (backup_cred(cifs_sb))
112+ search_flags |= CIFS_SEARCH_BACKUP_SEARCH;
113+
114 rc = CIFSFindFirst(xid, pTcon, full_path, cifs_sb->local_nls,
115- &cifsFile->netfid, &cifsFile->srch_inf,
116+ &cifsFile->netfid, search_flags, &cifsFile->srch_inf,
117 cifs_sb->mnt_cifs_flags &
118 CIFS_MOUNT_MAP_SPECIAL_CHR, CIFS_DIR_SEP(cifs_sb));
119 if (rc == 0)
120@@ -502,11 +507,13 @@ static int cifs_save_resume_key(const char *current_entry,
121 static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
122 struct file *file, char **ppCurrentEntry, int *num_to_ret)
123 {
124+ __u16 search_flags;
125 int rc = 0;
126 int pos_in_buf = 0;
127 loff_t first_entry_in_buffer;
128 loff_t index_to_find = file->f_pos;
129 struct cifsFileInfo *cifsFile = file->private_data;
130+ struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
131 /* check if index in the buffer */
132
133 if ((cifsFile == NULL) || (ppCurrentEntry == NULL) ||
134@@ -560,10 +567,14 @@ static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
135 cifsFile);
136 }
137
138+ search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME;
139+ if (backup_cred(cifs_sb))
140+ search_flags |= CIFS_SEARCH_BACKUP_SEARCH;
141+
142 while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
143 (rc == 0) && !cifsFile->srch_inf.endOfSearch) {
144 cFYI(1, "calling findnext2");
145- rc = CIFSFindNext(xid, pTcon, cifsFile->netfid,
146+ rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, search_flags,
147 &cifsFile->srch_inf);
148 /* FindFirst/Next set last_entry to NULL on malformed reply */
149 if (cifsFile->srch_inf.last_entry)
150--
1511.7.9.5
152
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch
new file mode 100644
index 00000000..f3aea621
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch
@@ -0,0 +1,63 @@
1From 0a5a9dc98eefca8c849daa43b5763fc53d672ebf Mon Sep 17 00:00:00 2001
2From: Trond Myklebust <Trond.Myklebust@netapp.com>
3Date: Sat, 19 May 2012 12:12:53 -0400
4Subject: [PATCH 04/86] sunrpc: fix loss of task->tk_status after rpc_delay
5 call in xprt_alloc_slot
6
7commit 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 upstream.
8
9xprt_alloc_slot will call rpc_delay() to make the task wait a bit before
10retrying when it gets back an -ENOMEM error from xprt_dynamic_alloc_slot.
11The problem is that rpc_delay will clear the task->tk_status, causing
12call_reserveresult to abort the task.
13
14The solution is simply to let call_reserveresult handle the ENOMEM error
15directly.
16
17Reported-by: Jeff Layton <jlayton@redhat.com>
18Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 net/sunrpc/clnt.c | 2 ++
22 net/sunrpc/xprt.c | 5 +++--
23 2 files changed, 5 insertions(+), 2 deletions(-)
24
25diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
26index f0268ea..b2250da 100644
27--- a/net/sunrpc/clnt.c
28+++ b/net/sunrpc/clnt.c
29@@ -959,6 +959,8 @@ call_reserveresult(struct rpc_task *task)
30 }
31
32 switch (status) {
33+ case -ENOMEM:
34+ rpc_delay(task, HZ >> 2);
35 case -EAGAIN: /* woken up; retry */
36 task->tk_action = call_reserve;
37 return;
38diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
39index c64c0ef..3ac9789 100644
40--- a/net/sunrpc/xprt.c
41+++ b/net/sunrpc/xprt.c
42@@ -977,15 +977,16 @@ static void xprt_alloc_slot(struct rpc_task *task)
43 goto out_init_req;
44 switch (PTR_ERR(req)) {
45 case -ENOMEM:
46- rpc_delay(task, HZ >> 2);
47 dprintk("RPC: dynamic allocation of request slot "
48 "failed! Retrying\n");
49+ task->tk_status = -ENOMEM;
50 break;
51 case -EAGAIN:
52 rpc_sleep_on(&xprt->backlog, task, NULL);
53 dprintk("RPC: waiting for request slot\n");
54+ default:
55+ task->tk_status = -EAGAIN;
56 }
57- task->tk_status = -EAGAIN;
58 return;
59 out_init_req:
60 task->tk_status = 0;
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch
new file mode 100644
index 00000000..0b0abbd8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch
@@ -0,0 +1,49 @@
1From afd117116e98d0444a0ace7d152207a54cc15ff5 Mon Sep 17 00:00:00 2001
2From: Boaz Harrosh <bharrosh@panasas.com>
3Date: Wed, 16 May 2012 14:22:21 +0300
4Subject: [PATCH 05/86] exofs: Fix CRASH on very early IO errors.
5
6commit 6abe4a87f7bc7978705c386dbba0ca0c7790b3ec upstream.
7
8If at exofs_fill_super() we had an early termination
9do to any error, like an IO error while reading the
10super-block. We would crash inside exofs_free_sbi().
11
12This is because sbi->oc.numdevs was set to 1, before
13we actually have a device table at all.
14
15Fix it by moving the sbi->oc.numdevs = 1 to after the
16allocation of the device table.
17
18Reported-by: Johannes Schild <JSchild@gmx.de>
19
20Stable: This is a bug since v3.2.0
21Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 fs/exofs/super.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/fs/exofs/super.c b/fs/exofs/super.c
28index e6085ec..7ed5000 100644
29--- a/fs/exofs/super.c
30+++ b/fs/exofs/super.c
31@@ -745,7 +745,6 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
32 sbi->one_comp.obj.partition = opts->pid;
33 sbi->one_comp.obj.id = 0;
34 exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj);
35- sbi->oc.numdevs = 1;
36 sbi->oc.single_comp = EC_SINGLE_COMP;
37 sbi->oc.comps = &sbi->one_comp;
38
39@@ -803,6 +802,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
40 goto free_sbi;
41
42 ore_comp_set_dev(&sbi->oc, 0, od);
43+ sbi->oc.numdevs = 1;
44 }
45
46 __sbi_read_stats(sbi);
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch
new file mode 100644
index 00000000..d54b0cdb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch
@@ -0,0 +1,141 @@
1From 4efa0e1388965846f96dfa4afd84b6ee7560eec7 Mon Sep 17 00:00:00 2001
2From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
3Date: Mon, 21 May 2012 09:20:12 -0500
4Subject: [PATCH 06/86] cifs: fix oops while traversing open file list (try
5 #4)
6
7commit 2c0c2a08bed7a3b791f88d09d16ace56acb3dd98 upstream.
8
9While traversing the linked list of open file handles, if the identfied
10file handle is invalid, a reopen is attempted and if it fails, we
11resume traversing where we stopped and cifs can oops while accessing
12invalid next element, for list might have changed.
13
14So mark the invalid file handle and attempt reopen if no
15valid file handle is found in rest of the list.
16If reopen fails, move the invalid file handle to the end of the list
17and start traversing the list again from the begining.
18Repeat this four times before giving up and returning an error if
19file reopen keeps failing.
20
21Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
22Reviewed-by: Jeff Layton <jlayton@redhat.com>
23Signed-off-by: Steve French <sfrench@us.ibm.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 fs/cifs/cifsglob.h | 1 +
27 fs/cifs/file.c | 57 ++++++++++++++++++++++++++++++----------------------
28 2 files changed, 34 insertions(+), 24 deletions(-)
29
30diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
31index c467ac8..2f3ff59 100644
32--- a/fs/cifs/cifsglob.h
33+++ b/fs/cifs/cifsglob.h
34@@ -43,6 +43,7 @@
35
36 #define CIFS_MIN_RCV_POOL 4
37
38+#define MAX_REOPEN_ATT 5 /* these many maximum attempts to reopen a file */
39 /*
40 * default attribute cache timeout (jiffies)
41 */
42diff --git a/fs/cifs/file.c b/fs/cifs/file.c
43index 0f7dc22..0bb785f 100644
44--- a/fs/cifs/file.c
45+++ b/fs/cifs/file.c
46@@ -1534,10 +1534,11 @@ struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *cifs_inode,
47 struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode,
48 bool fsuid_only)
49 {
50- struct cifsFileInfo *open_file;
51+ struct cifsFileInfo *open_file, *inv_file = NULL;
52 struct cifs_sb_info *cifs_sb;
53 bool any_available = false;
54 int rc;
55+ unsigned int refind = 0;
56
57 /* Having a null inode here (because mapping->host was set to zero by
58 the VFS or MM) should not happen but we had reports of on oops (due to
59@@ -1557,40 +1558,25 @@ struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode,
60
61 spin_lock(&cifs_file_list_lock);
62 refind_writable:
63+ if (refind > MAX_REOPEN_ATT) {
64+ spin_unlock(&cifs_file_list_lock);
65+ return NULL;
66+ }
67 list_for_each_entry(open_file, &cifs_inode->openFileList, flist) {
68 if (!any_available && open_file->pid != current->tgid)
69 continue;
70 if (fsuid_only && open_file->uid != current_fsuid())
71 continue;
72 if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) {
73- cifsFileInfo_get(open_file);
74-
75 if (!open_file->invalidHandle) {
76 /* found a good writable file */
77+ cifsFileInfo_get(open_file);
78 spin_unlock(&cifs_file_list_lock);
79 return open_file;
80+ } else {
81+ if (!inv_file)
82+ inv_file = open_file;
83 }
84-
85- spin_unlock(&cifs_file_list_lock);
86-
87- /* Had to unlock since following call can block */
88- rc = cifs_reopen_file(open_file, false);
89- if (!rc)
90- return open_file;
91-
92- /* if it fails, try another handle if possible */
93- cFYI(1, "wp failed on reopen file");
94- cifsFileInfo_put(open_file);
95-
96- spin_lock(&cifs_file_list_lock);
97-
98- /* else we simply continue to the next entry. Thus
99- we do not loop on reopen errors. If we
100- can not reopen the file, for example if we
101- reconnected to a server with another client
102- racing to delete or lock the file we would not
103- make progress if we restarted before the beginning
104- of the loop here. */
105 }
106 }
107 /* couldn't find useable FH with same pid, try any available */
108@@ -1598,7 +1584,30 @@ refind_writable:
109 any_available = true;
110 goto refind_writable;
111 }
112+
113+ if (inv_file) {
114+ any_available = false;
115+ cifsFileInfo_get(inv_file);
116+ }
117+
118 spin_unlock(&cifs_file_list_lock);
119+
120+ if (inv_file) {
121+ rc = cifs_reopen_file(inv_file, false);
122+ if (!rc)
123+ return inv_file;
124+ else {
125+ spin_lock(&cifs_file_list_lock);
126+ list_move_tail(&inv_file->flist,
127+ &cifs_inode->openFileList);
128+ spin_unlock(&cifs_file_list_lock);
129+ cifsFileInfo_put(inv_file);
130+ spin_lock(&cifs_file_list_lock);
131+ ++refind;
132+ goto refind_writable;
133+ }
134+ }
135+
136 return NULL;
137 }
138
139--
1401.7.9.5
141
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch
new file mode 100644
index 00000000..abd3752a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch
@@ -0,0 +1,61 @@
1From 49f60fdaf9a6a36e04829a74b3b1f28ab99dc96a Mon Sep 17 00:00:00 2001
2From: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
3Date: Tue, 22 May 2012 18:57:17 +0900
4Subject: [PATCH 07/86] Fix dm-multipath starvation when scsi host is busy
5
6commit b7e94a1686c5daef4f649f7f4f839cc294f07710 upstream.
7
8block congestion control doesn't have any concept of fairness across
9multiple queues. This means that if SCSI reports the host as busy in
10the queue congestion control it can result in an unfair starvation
11situation in dm-mp if there are multiple multipath devices on the same
12host. For example:
13http://www.redhat.com/archives/dm-devel/2012-May/msg00123.html
14
15The fix for this is to report only the sdev busy state (and ignore the
16host busy state) in the block congestion control call back.
17The host is still congested, but the SCSI subsystem will sort out the
18congestion in a fair way because it knows the relation between the
19queues and the host.
20
21[jejb: fixed up trailing whitespace]
22Reported-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
23Tested-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
24Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
25Signed-off-by: James Bottomley <JBottomley@Parallels.com>
26Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
27---
28 drivers/scsi/scsi_lib.c | 11 +++++++----
29 1 file changed, 7 insertions(+), 4 deletions(-)
30
31diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
32index f85cfa6..f0ab58e 100644
33--- a/drivers/scsi/scsi_lib.c
34+++ b/drivers/scsi/scsi_lib.c
35@@ -1382,16 +1382,19 @@ static int scsi_lld_busy(struct request_queue *q)
36 {
37 struct scsi_device *sdev = q->queuedata;
38 struct Scsi_Host *shost;
39- struct scsi_target *starget;
40
41 if (!sdev)
42 return 0;
43
44 shost = sdev->host;
45- starget = scsi_target(sdev);
46
47- if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) ||
48- scsi_target_is_busy(starget) || scsi_device_is_busy(sdev))
49+ /*
50+ * Ignore host/starget busy state.
51+ * Since block layer does not have a concept of fairness across
52+ * multiple queues, congestion of host/starget needs to be handled
53+ * in SCSI layer.
54+ */
55+ if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev))
56 return 1;
57
58 return 0;
59--
601.7.9.5
61
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch
new file mode 100644
index 00000000..57522bf1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch
@@ -0,0 +1,210 @@
1From ee8e09be6e0d533351740fc80d291bab8e2686c3 Mon Sep 17 00:00:00 2001
2From: Richard Cochran <richardcochran@gmail.com>
3Date: Wed, 23 May 2012 18:19:51 +0200
4Subject: [PATCH 08/86] ixp4xx: fix compilation by adding gpiolib support
5
6commit 9dde0ae3769875ec1370cb316e50c54b57d52c1a upstream.
7
8Once again, ixp4xx no longer even compiles. This patch fixes the issue
9by converting over to gpiolib. This patch was first made by Imre and
10posted by Marc, and I added in Russell's suggestion to empty the gpio
11header file.
12
13This fix should also go for 3.1, 3.2, 3.3, and 3.4.
14
15Signed-off-by: Richard Cochran <richardcochran@gmail.com>
16Signed-off-by: Arnd Bergmann <arnd@arndb.de>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 arch/arm/Kconfig | 2 +-
20 arch/arm/mach-ixp4xx/common.c | 48 +++++++++++++++++-
21 arch/arm/mach-ixp4xx/include/mach/gpio.h | 79 +-----------------------------
22 3 files changed, 48 insertions(+), 81 deletions(-)
23
24diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
25index 26574f0..cad2ec2 100644
26--- a/arch/arm/Kconfig
27+++ b/arch/arm/Kconfig
28@@ -520,7 +520,7 @@ config ARCH_IXP4XX
29 depends on MMU
30 select CLKSRC_MMIO
31 select CPU_XSCALE
32- select GENERIC_GPIO
33+ select ARCH_REQUIRE_GPIOLIB
34 select GENERIC_CLOCKEVENTS
35 select HAVE_SCHED_CLOCK
36 select MIGHT_HAVE_PCI
37diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
38index b86a005..caf28fc 100644
39--- a/arch/arm/mach-ixp4xx/common.c
40+++ b/arch/arm/mach-ixp4xx/common.c
41@@ -29,6 +29,7 @@
42 #include <linux/clockchips.h>
43 #include <linux/io.h>
44 #include <linux/export.h>
45+#include <linux/gpio.h>
46
47 #include <mach/udc.h>
48 #include <mach/hardware.h>
49@@ -106,7 +107,7 @@ static signed char irq2gpio[32] = {
50 7, 8, 9, 10, 11, 12, -1, -1,
51 };
52
53-int gpio_to_irq(int gpio)
54+static int ixp4xx_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
55 {
56 int irq;
57
58@@ -116,7 +117,6 @@ int gpio_to_irq(int gpio)
59 }
60 return -EINVAL;
61 }
62-EXPORT_SYMBOL(gpio_to_irq);
63
64 int irq_to_gpio(unsigned int irq)
65 {
66@@ -376,12 +376,56 @@ static struct platform_device *ixp46x_devices[] __initdata = {
67 unsigned long ixp4xx_exp_bus_size;
68 EXPORT_SYMBOL(ixp4xx_exp_bus_size);
69
70+static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
71+{
72+ gpio_line_config(gpio, IXP4XX_GPIO_IN);
73+
74+ return 0;
75+}
76+
77+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
78+ int level)
79+{
80+ gpio_line_set(gpio, level);
81+ gpio_line_config(gpio, IXP4XX_GPIO_OUT);
82+
83+ return 0;
84+}
85+
86+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
87+{
88+ int value;
89+
90+ gpio_line_get(gpio, &value);
91+
92+ return value;
93+}
94+
95+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio,
96+ int value)
97+{
98+ gpio_line_set(gpio, value);
99+}
100+
101+static struct gpio_chip ixp4xx_gpio_chip = {
102+ .label = "IXP4XX_GPIO_CHIP",
103+ .direction_input = ixp4xx_gpio_direction_input,
104+ .direction_output = ixp4xx_gpio_direction_output,
105+ .get = ixp4xx_gpio_get_value,
106+ .set = ixp4xx_gpio_set_value,
107+ .to_irq = ixp4xx_gpio_to_irq,
108+ .base = 0,
109+ .ngpio = 16,
110+};
111+
112 void __init ixp4xx_sys_init(void)
113 {
114 ixp4xx_exp_bus_size = SZ_16M;
115
116 platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices));
117
118+ gpiochip_add(&ixp4xx_gpio_chip);
119+
120 if (cpu_is_ixp46x()) {
121 int region;
122
123diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
124index 83d6b4e..ef37f26 100644
125--- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
126+++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
127@@ -1,79 +1,2 @@
128-/*
129- * arch/arm/mach-ixp4xx/include/mach/gpio.h
130- *
131- * IXP4XX GPIO wrappers for arch-neutral GPIO calls
132- *
133- * Written by Milan Svoboda <msvoboda@ra.rockwell.com>
134- * Based on PXA implementation by Philipp Zabel <philipp.zabel@gmail.com>
135- *
136- * This program is free software; you can redistribute it and/or modify
137- * it under the terms of the GNU General Public License as published by
138- * the Free Software Foundation; either version 2 of the License, or
139- * (at your option) any later version.
140- *
141- * This program is distributed in the hope that it will be useful,
142- * but WITHOUT ANY WARRANTY; without even the implied warranty of
143- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
144- * GNU General Public License for more details.
145- *
146- * You should have received a copy of the GNU General Public License
147- * along with this program; if not, write to the Free Software
148- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
149- *
150- */
151-
152-#ifndef __ASM_ARCH_IXP4XX_GPIO_H
153-#define __ASM_ARCH_IXP4XX_GPIO_H
154-
155-#include <linux/kernel.h>
156-#include <mach/hardware.h>
157-
158-#define __ARM_GPIOLIB_COMPLEX
159-
160-static inline int gpio_request(unsigned gpio, const char *label)
161-{
162- return 0;
163-}
164-
165-static inline void gpio_free(unsigned gpio)
166-{
167- might_sleep();
168-
169- return;
170-}
171-
172-static inline int gpio_direction_input(unsigned gpio)
173-{
174- gpio_line_config(gpio, IXP4XX_GPIO_IN);
175- return 0;
176-}
177-
178-static inline int gpio_direction_output(unsigned gpio, int level)
179-{
180- gpio_line_set(gpio, level);
181- gpio_line_config(gpio, IXP4XX_GPIO_OUT);
182- return 0;
183-}
184-
185-static inline int gpio_get_value(unsigned gpio)
186-{
187- int value;
188-
189- gpio_line_get(gpio, &value);
190-
191- return value;
192-}
193-
194-static inline void gpio_set_value(unsigned gpio, int value)
195-{
196- gpio_line_set(gpio, value);
197-}
198-
199-#include <asm-generic/gpio.h> /* cansleep wrappers */
200-
201-extern int gpio_to_irq(int gpio);
202-#define gpio_to_irq gpio_to_irq
203-extern int irq_to_gpio(unsigned int irq);
204-
205-#endif
206+/* empty */
207
208--
2091.7.9.5
210
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch
new file mode 100644
index 00000000..c470feb4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch
@@ -0,0 +1,78 @@
1From b519a21cd90e7ce2e8e8474c5beb3671862018b3 Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Sat, 12 May 2012 22:22:58 +0200
4Subject: [PATCH 09/86] drm/i915: properly handle interlaced bit for sdvo dtd
5 conversion
6
7commit 59d92bfa5f0cdf57f82f5181b0ad6af75c3fdf41 upstream.
8
9We've simply ignored this, which isn't too great. With this, interlaced
101080i works on my HDMI screen connected through sdvo. For no apparent
11reason anything else still doesn't work as it should.
12
13While at it, give these magic numbers in the dtd proper names and
14add a comment that they match with EDID detailed timings.
15
16v2: Actually use the right bit for interlaced.
17
18Tested-by: Peter Ross <pross@xvid.org>
19Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
20Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/gpu/drm/i915/intel_sdvo.c | 12 ++++++++----
24 drivers/gpu/drm/i915/intel_sdvo_regs.h | 5 +++++
25 2 files changed, 13 insertions(+), 4 deletions(-)
26
27diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
28index 8eddcca..a8d8ee5 100644
29--- a/drivers/gpu/drm/i915/intel_sdvo.c
30+++ b/drivers/gpu/drm/i915/intel_sdvo.c
31@@ -769,10 +769,12 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
32 ((v_sync_len & 0x30) >> 4);
33
34 dtd->part2.dtd_flags = 0x18;
35+ if (mode->flags & DRM_MODE_FLAG_INTERLACE)
36+ dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE;
37 if (mode->flags & DRM_MODE_FLAG_PHSYNC)
38- dtd->part2.dtd_flags |= 0x2;
39+ dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE;
40 if (mode->flags & DRM_MODE_FLAG_PVSYNC)
41- dtd->part2.dtd_flags |= 0x4;
42+ dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE;
43
44 dtd->part2.sdvo_flags = 0;
45 dtd->part2.v_sync_off_high = v_sync_offset & 0xc0;
46@@ -806,9 +808,11 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode,
47 mode->clock = dtd->part1.clock * 10;
48
49 mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
50- if (dtd->part2.dtd_flags & 0x2)
51+ if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE)
52+ mode->flags |= DRM_MODE_FLAG_INTERLACE;
53+ if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
54 mode->flags |= DRM_MODE_FLAG_PHSYNC;
55- if (dtd->part2.dtd_flags & 0x4)
56+ if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
57 mode->flags |= DRM_MODE_FLAG_PVSYNC;
58 }
59
60diff --git a/drivers/gpu/drm/i915/intel_sdvo_regs.h b/drivers/gpu/drm/i915/intel_sdvo_regs.h
61index 4aa6f34..372f33b 100644
62--- a/drivers/gpu/drm/i915/intel_sdvo_regs.h
63+++ b/drivers/gpu/drm/i915/intel_sdvo_regs.h
64@@ -61,6 +61,11 @@ struct intel_sdvo_caps {
65 u16 output_flags;
66 } __attribute__((packed));
67
68+/* Note: SDVO detailed timing flags match EDID misc flags. */
69+#define DTD_FLAG_HSYNC_POSITIVE (1 << 1)
70+#define DTD_FLAG_VSYNC_POSITIVE (1 << 2)
71+#define DTD_FLAG_INTERLACE (1 << 7)
72+
73 /** This matches the EDID DTD structure, more or less */
74 struct intel_sdvo_dtd {
75 struct {
76--
771.7.9.5
78
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch
new file mode 100644
index 00000000..78fa10a9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch
@@ -0,0 +1,97 @@
1From d915c2455a13d5067c95770d33dd71dae5fdabf0 Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Sun, 20 May 2012 17:14:50 +0200
4Subject: [PATCH 10/86] drm/i915: enable vdd when switching off the eDP panel
5
6commit 6cb49835da0426f69a2931bc2a0a8156344b0e41 upstream.
7
8We have one bug report from a validation team that we get the eDP
9panel sequencing still somewhat wrong: We need to enable VDD while
10switching off the panel and backlight. Unfortunately that reporter
11seems to have fallen off the earth :(
12
13For another reporter this actually fixes a black panel issue because
14without this the backlight/panel gets confused and doesn't light up
15again.
16
17v2: I've forgotten to remove the vdd_off call in panel_off which is
18now bogus. This essentially reverts
19
20commit 17038de5f16569a25343cf68668f3b657eafb00e
21Author: Chris Wilson <chris@chris-wilson.co.uk>
22Date: Mon Apr 16 22:43:42 2012 +0100
23
24 drm/i915/dp: Flush any outstanding work to turn the VDD off
25
26v3: the current panel_off code forces off the vdd power, too. Which is
27bogus and resulted in some funny warnings later on when we've tried to
28do aux channel communications with just the vdd forced on. Fix this,
29too.
30
31Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46312
32Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43163
33Tested-by: Vincent Frentzel <zcecc22@gmail.com>
34Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
35Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
36[bwh: Backported to 3.2: nothing to revert here]
37Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
38---
39 drivers/gpu/drm/i915/intel_dp.c | 17 ++++++++---------
40 1 file changed, 8 insertions(+), 9 deletions(-)
41
42diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
43index 12eb789..d4c4937 100644
44--- a/drivers/gpu/drm/i915/intel_dp.c
45+++ b/drivers/gpu/drm/i915/intel_dp.c
46@@ -1149,10 +1149,10 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)
47
48 DRM_DEBUG_KMS("Turn eDP power off\n");
49
50- WARN(intel_dp->want_panel_vdd, "Cannot turn power off while VDD is on\n");
51+ WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n");
52
53 pp = ironlake_get_pp_control(dev_priv);
54- pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE);
55+ pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE);
56 I915_WRITE(PCH_PP_CONTROL, pp);
57 POSTING_READ(PCH_PP_CONTROL);
58
59@@ -1260,18 +1260,16 @@ static void intel_dp_prepare(struct drm_encoder *encoder)
60 {
61 struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
62
63+
64+ /* Make sure the panel is off before trying to change the mode. But also
65+ * ensure that we have vdd while we switch off the panel. */
66+ ironlake_edp_panel_vdd_on(intel_dp);
67 ironlake_edp_backlight_off(intel_dp);
68 ironlake_edp_panel_off(intel_dp);
69
70- /* Wake up the sink first */
71- ironlake_edp_panel_vdd_on(intel_dp);
72 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
73 intel_dp_link_down(intel_dp);
74 ironlake_edp_panel_vdd_off(intel_dp, false);
75-
76- /* Make sure the panel is off before trying to
77- * change the mode
78- */
79 }
80
81 static void intel_dp_commit(struct drm_encoder *encoder)
82@@ -1303,10 +1301,11 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
83 uint32_t dp_reg = I915_READ(intel_dp->output_reg);
84
85 if (mode != DRM_MODE_DPMS_ON) {
86+ /* Switching the panel off requires vdd. */
87+ ironlake_edp_panel_vdd_on(intel_dp);
88 ironlake_edp_backlight_off(intel_dp);
89 ironlake_edp_panel_off(intel_dp);
90
91- ironlake_edp_panel_vdd_on(intel_dp);
92 intel_dp_sink_dpms(intel_dp, mode);
93 intel_dp_link_down(intel_dp);
94 ironlake_edp_panel_vdd_off(intel_dp, false);
95--
961.7.9.5
97
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch
new file mode 100644
index 00000000..ad6ab9f4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch
@@ -0,0 +1,37 @@
1From ef4b47456ac4610f22bb2920e5562a6f854193d6 Mon Sep 17 00:00:00 2001
2From: Joel Sass <jsass@disklessworkstations.com>
3Date: Tue, 10 Jan 2012 13:03:55 -0500
4Subject: [PATCH 11/86] drm/i915: Add Clientron E830 to the ignore LVDS list
5
6commit 44306ab302687b519a31aa498b954c1e26f95a6b upstream.
7
8Signed-off-by: Joel Sass <jsass@disklessworkstations.com>
9Reviewed-by: Adam Jackson <ajax@redhat.com>
10Signed-off-by: Keith Packard <keithp@keithp.com>
11Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
12---
13 drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
14 1 file changed, 8 insertions(+)
15
16diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
17index 583c2d0..8b42354 100644
18--- a/drivers/gpu/drm/i915/intel_lvds.c
19+++ b/drivers/gpu/drm/i915/intel_lvds.c
20@@ -716,6 +716,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
21 },
22 },
23 {
24+ .callback = intel_no_lvds_dmi_callback,
25+ .ident = "Clientron E830",
26+ .matches = {
27+ DMI_MATCH(DMI_SYS_VENDOR, "Clientron"),
28+ DMI_MATCH(DMI_PRODUCT_NAME, "E830"),
29+ },
30+ },
31+ {
32 .callback = intel_no_lvds_dmi_callback,
33 .ident = "Asus EeeBox PC EB1007",
34 .matches = {
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch
new file mode 100644
index 00000000..8ffca2fe
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch
@@ -0,0 +1,54 @@
1From 6beb441393de6232df05c7850c99d26dd5ebbded Mon Sep 17 00:00:00 2001
2From: Marc Gariepy <mgariepy@ubuntu.com>
3Date: Thu, 9 Feb 2012 09:35:21 -0500
4Subject: [PATCH 12/86] drm/i915: Ignore LVDS on hp t5745 and hp st5747 thin
5 client
6
7commit f5b8a7ed0405d48fd096acce48fbefbed77fb055 upstream.
8
9Add a no_lvds quirk for the HP t5745 and HP st5747 thin clients
10
11dmidecode for those thin clients are attached in thoses bugs:
12https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911916
13https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911920
14
15Signed-off-by: Marc Gariepy <mgariepy@ubuntu.com>
16Acked-by: Adam Jackson <ajax@redhat.com>
17Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
18[bwh: Backported to 3.2: adjust context because these quirk entries aren't
19 consistently cc'd to stable and are now being applied out of order]
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/gpu/drm/i915/intel_lvds.c | 16 ++++++++++++++++
23 1 file changed, 16 insertions(+)
24
25diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
26index 8b42354..8c8a242 100644
27--- a/drivers/gpu/drm/i915/intel_lvds.c
28+++ b/drivers/gpu/drm/i915/intel_lvds.c
29@@ -741,6 +741,22 @@ static const struct dmi_system_id intel_no_lvds[] = {
30 },
31 {
32 .callback = intel_no_lvds_dmi_callback,
33+ .ident = "Hewlett-Packard t5745",
34+ .matches = {
35+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
36+ DMI_MATCH(DMI_BOARD_NAME, "hp t5745"),
37+ },
38+ },
39+ {
40+ .callback = intel_no_lvds_dmi_callback,
41+ .ident = "Hewlett-Packard st5747",
42+ .matches = {
43+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
44+ DMI_MATCH(DMI_BOARD_NAME, "hp st5747"),
45+ },
46+ },
47+ {
48+ .callback = intel_no_lvds_dmi_callback,
49 .ident = "MSI Wind Box DC500",
50 .matches = {
51 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch
new file mode 100644
index 00000000..dc269a7f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch
@@ -0,0 +1,40 @@
1From f2171756e0e65d51316644162826fd3c64774734 Mon Sep 17 00:00:00 2001
2From: Jan-Benedict Glaw <jan-benedict.glaw@getslash.de>
3Date: Tue, 22 May 2012 15:21:53 +0200
4Subject: [PATCH 13/86] drm/i915: no lvds quirk for HP t5740e Thin Client
5
6commit 3347111999870c37eab1b969e90af9fdaf0334ba upstream.
7
8This box has DisplayPort and VGA, but no LVDS. Product specs are at
9http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/12454-12454-321959-338927-3640406-4282707.html?dnr=1
10and dmidecode output can be found at http://www.getslash.de/bug_attachments/dmidecode-t5740e.txt
11
12Signed-off-by: Jan-Benedict Glaw <jbglaw@getslash.de>
13Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
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 8c8a242..ceec71b 100644
21--- a/drivers/gpu/drm/i915/intel_lvds.c
22+++ b/drivers/gpu/drm/i915/intel_lvds.c
23@@ -741,6 +741,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
24 },
25 {
26 .callback = intel_no_lvds_dmi_callback,
27+ .ident = "Hewlett-Packard HP t5740e Thin Client",
28+ .matches = {
29+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
30+ DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"),
31+ },
32+ },
33+ {
34+ .callback = intel_no_lvds_dmi_callback,
35 .ident = "Hewlett-Packard t5745",
36 .matches = {
37 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
38--
391.7.9.5
40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch
new file mode 100644
index 00000000..8a83f69e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch
@@ -0,0 +1,66 @@
1From f3a0b43b245485fb298eac1ba14679bf95a2a88b Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Tue, 22 May 2012 21:41:25 +0200
4Subject: [PATCH 14/86] drm/i915: wait for a vblank to pass after tv detect
5
6commit bf2125e2f7e931b50a6c76ba0435ba001409ccbf upstream.
7
8Otherwise the hw will get confused and result in a black screen.
9
10This regression has been most likely introduce in
11
12commit 974b93315b2213b74a42a87e8a9d4fc8c0dbe90c
13Author: Chris Wilson <chris@chris-wilson.co.uk>
14Date: Sun Sep 5 00:44:20 2010 +0100
15
16 drm/i915/tv: Poll for DAC state change
17
18That commit replace the first msleep(20) with a busy-loop, but failed
19to keep the 2nd msleep around. Later on we've replaced all these
20msleep(20) by proper vblanks.
21
22For reference also see the commit in xf86-video-intel:
23
24commit 1142be53eb8d2ee8a9b60ace5d49f0ba27332275
25Author: Jesse Barnes <jbarnes@hobbes.lan>
26Date: Mon Jun 9 08:52:59 2008 -0700
27
28 Fix TV programming: add vblank wait after TV_CTL writes
29
30 Fxies FDO bug #14000; we need to wait for vblank after
31 writing TV_CTL or following "DPMS on" calls may not actually enable the output.
32
33v2: As suggested by Chris Wilson, add a small comment to ensure that
34no one accidentally removes this vblank wait again - there really
35seems to be no sane explanation for why we need it, but it is
36required.
37
38Launchpad: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/763688
39Reported-and-Tested-by: Robert Lowery <rglowery@exemail.com.au>
40Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
41Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
42Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
43Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
44---
45 drivers/gpu/drm/i915/intel_tv.c | 5 +++++
46 1 file changed, 5 insertions(+)
47
48diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
49index 2b1fcad..12041fa 100644
50--- a/drivers/gpu/drm/i915/intel_tv.c
51+++ b/drivers/gpu/drm/i915/intel_tv.c
52@@ -1307,6 +1307,11 @@ intel_tv_detect_type(struct intel_tv *intel_tv,
53
54 I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN);
55 I915_WRITE(TV_CTL, save_tv_ctl);
56+ POSTING_READ(TV_CTL);
57+
58+ /* For unknown reasons the hw barfs if we don't do this vblank wait. */
59+ intel_wait_for_vblank(intel_tv->base.base.dev,
60+ to_intel_crtc(intel_tv->base.base.crtc)->pipe);
61
62 /* Restore interrupt config */
63 if (connector->polled & DRM_CONNECTOR_POLL_HPD) {
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch
new file mode 100644
index 00000000..74edb53b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch
@@ -0,0 +1,55 @@
1From f303698996052a0fcd44d1fbfbfa58a20d59a1e1 Mon Sep 17 00:00:00 2001
2From: Ben Widawsky <ben@bwidawsk.net>
3Date: Mon, 12 Dec 2011 19:21:59 -0800
4Subject: [PATCH 15/86] drm/i915: Update GEN6_RP_CONTROL definitions
5
6commit 6ed55ee7da15329476174bc5821dbc723f671f44 upstream.
7
8This matches the modern specs more accurately.
9
10This will be used by the following patch to fix the way we display RC
11status.
12
13Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
14Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
15Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
16Signed-off-by: Keith Packard <keithp@keithp.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/gpu/drm/i915/i915_reg.h | 6 +++++-
20 drivers/gpu/drm/i915/intel_display.c | 2 +-
21 2 files changed, 6 insertions(+), 2 deletions(-)
22
23diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
24index a1d53b6..06ec1e5 100644
25--- a/drivers/gpu/drm/i915/i915_reg.h
26+++ b/drivers/gpu/drm/i915/i915_reg.h
27@@ -3533,7 +3533,11 @@
28 #define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT)
29 #define GEN6_RP_CONTROL 0xA024
30 #define GEN6_RP_MEDIA_TURBO (1<<11)
31-#define GEN6_RP_USE_NORMAL_FREQ (1<<9)
32+#define GEN6_RP_MEDIA_MODE_MASK (3<<9)
33+#define GEN6_RP_MEDIA_HW_TURBO_MODE (3<<9)
34+#define GEN6_RP_MEDIA_HW_NORMAL_MODE (2<<9)
35+#define GEN6_RP_MEDIA_HW_MODE (1<<9)
36+#define GEN6_RP_MEDIA_SW_MODE (0<<9)
37 #define GEN6_RP_MEDIA_IS_GFX (1<<8)
38 #define GEN6_RP_ENABLE (1<<7)
39 #define GEN6_RP_UP_IDLE_MIN (0x1<<3)
40diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
41index 3ff980d..ed27fbc 100644
42--- a/drivers/gpu/drm/i915/intel_display.c
43+++ b/drivers/gpu/drm/i915/intel_display.c
44@@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
45 I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
46 I915_WRITE(GEN6_RP_CONTROL,
47 GEN6_RP_MEDIA_TURBO |
48- GEN6_RP_USE_NORMAL_FREQ |
49+ GEN6_RP_MEDIA_HW_MODE |
50 GEN6_RP_MEDIA_IS_GFX |
51 GEN6_RP_ENABLE |
52 GEN6_RP_UP_BUSY_AVG |
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch
new file mode 100644
index 00000000..5a9ce7b6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch
@@ -0,0 +1,39 @@
1From f3c8f039e644d5ce7961567174a9d5b8ebb4b447 Mon Sep 17 00:00:00 2001
2From: Jesse Barnes <jbarnes@virtuousgeek.org>
3Date: Tue, 22 May 2012 09:30:33 -0700
4Subject: [PATCH 16/86] drm/i915: always use RPNSWREQ for turbo change
5 requests
6
7commit 89ba829e38bd500f438bc08af4229204c8ed7f35 upstream.
8
9Media turbo requests can either use RPVSWREQ or RPNSWREQ to indicate
10what the interrupt handler should do. Since we only deal with the
11latter in our turbo code, make the media engine use that for turbo
12requests.
13
14Tested-by: Joe Bloggsian <joebloggsian@gmail.com>
15Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
16Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
17Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
18[bwh: Backported to 3.2: adjust filename]
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/gpu/drm/i915/intel_display.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
25index ed27fbc..41bbe78 100644
26--- a/drivers/gpu/drm/i915/intel_display.c
27+++ b/drivers/gpu/drm/i915/intel_display.c
28@@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
29 I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
30 I915_WRITE(GEN6_RP_CONTROL,
31 GEN6_RP_MEDIA_TURBO |
32- GEN6_RP_MEDIA_HW_MODE |
33+ GEN6_RP_MEDIA_HW_NORMAL_MODE |
34 GEN6_RP_MEDIA_IS_GFX |
35 GEN6_RP_ENABLE |
36 GEN6_RP_UP_BUSY_AVG |
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch
new file mode 100644
index 00000000..87672915
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch
@@ -0,0 +1,51 @@
1From 44882d3e1cf0d691b04f438f70a32e6b918961d7 Mon Sep 17 00:00:00 2001
2From: David Woodhouse <dwmw2@infradead.org>
3Date: Thu, 24 May 2012 04:58:27 +0000
4Subject: [PATCH 17/86] solos-pci: Fix DMA support
5
6commit b4bd8ad9bb311e8536f726f7a633620ccd358cde upstream.
7
8DMA support has finally made its way to the top of the TODO list, having
9realised that a Geode using MMIO can't keep up with two ADSL2+ lines
10each running at 21Mb/s.
11
12This patch fixes a couple of bugs in the DMA support in the driver, so
13once the corresponding FPGA update is complete and tested everything
14should work properly.
15
16We weren't storing the currently-transmitting skb, so we were never
17unmapping it and never freeing/popping it when the TX was done.
18And the addition of pci_set_master() is fairly self-explanatory.
19
20Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
21Signed-off-by: David S. Miller <davem@davemloft.net>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 drivers/atm/solos-pci.c | 4 +++-
25 1 file changed, 3 insertions(+), 1 deletion(-)
26
27diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
28index 5d1d076..d452592 100644
29--- a/drivers/atm/solos-pci.c
30+++ b/drivers/atm/solos-pci.c
31@@ -984,6 +984,7 @@ static uint32_t fpga_tx(struct solos_card *card)
32 } else if (skb && card->using_dma) {
33 SKB_CB(skb)->dma_addr = pci_map_single(card->dev, skb->data,
34 skb->len, PCI_DMA_TODEVICE);
35+ card->tx_skb[port] = skb;
36 iowrite32(SKB_CB(skb)->dma_addr,
37 card->config_regs + TX_DMA_ADDR(port));
38 }
39@@ -1152,7 +1153,8 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id)
40 db_fpga_upgrade = db_firmware_upgrade = 0;
41 }
42
43- if (card->fpga_version >= DMA_SUPPORTED){
44+ if (card->fpga_version >= DMA_SUPPORTED) {
45+ pci_set_master(dev);
46 card->using_dma = 1;
47 } else {
48 card->using_dma = 0;
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch
new file mode 100644
index 00000000..0aa2bcaa
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch
@@ -0,0 +1,42 @@
1From d821eff0a262c36772be73973e20aea13568911e Mon Sep 17 00:00:00 2001
2From: Lars-Peter Clausen <lars@metafoo.de>
3Date: Mon, 9 Apr 2012 15:05:44 +0200
4Subject: [PATCH 18/86] microblaze: Do not select GENERIC_GPIO by default
5
6commit 59516b07b4ffa7e607a5787674ea3c405f1b390c upstream.
7
8The microblaze architecture does not provide a native GPIO API implementation
9nor requires GPIOLIB, but still selects GENERIC_GPIO by default. As a result the
10following build error occurs, if GPIOLIB is not selected:
11
12 include/asm-generic/gpio.h: In function 'gpio_get_value_cansleep':
13 include/asm-generic/gpio.h:218: error: implicit declaration of function '__gpio_get_value'
14 include/asm-generic/gpio.h: In function 'gpio_set_value_cansleep':
15 include/asm-generic/gpio.h:224: error: implicit declaration of function '__gpio_set_value'
16
17This patch addresses the issue by not selecting GENERIC_GPIO by default. This
18causes the GPIO API to be stubbed out if no implementation is provided.
19
20Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
21Tested-by: Michal Simek <monstr@monstr.eu>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 arch/microblaze/Kconfig | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
28index e446bab..a93ed04 100644
29--- a/arch/microblaze/Kconfig
30+++ b/arch/microblaze/Kconfig
31@@ -46,7 +46,7 @@ config GENERIC_CLOCKEVENTS
32 def_bool y
33
34 config GENERIC_GPIO
35- def_bool y
36+ bool
37
38 config GENERIC_CSUM
39 def_bool y
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch
new file mode 100644
index 00000000..5bf5053f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch
@@ -0,0 +1,49 @@
1From c3697804cdbf0ae3b5ae49ce49abea593e03e08c Mon Sep 17 00:00:00 2001
2From: John David Anglin <dave.anglin@bell.net>
3Date: Thu, 17 May 2012 10:34:34 -0400
4Subject: [PATCH 19/86] fix boot failure on 32-bit systems caused by branch
5 stubs placed before .text
6
7commit ed5fb2471b7060767957fb964eb1aaec71533ab1 upstream.
8
9In certain configurations, the resulting kernel becomes too large to boot
10because the linker places the long branch stubs for the merged .text section
11at the very start of the image. As a result, the initial transfer of control
12jumps to an unexpected location. Fix this by placing the head text in a
13separate section so the stubs for .text are not at the start of the image.
14
15Signed-off-by: John David Anglin <dave.anglin@bell.net>
16Signed-off-by: James Bottomley <JBottomley@Parallels.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 arch/parisc/kernel/vmlinux.lds.S | 6 ++++--
20 1 file changed, 4 insertions(+), 2 deletions(-)
21
22diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
23index fa6f2b8..64a9998 100644
24--- a/arch/parisc/kernel/vmlinux.lds.S
25+++ b/arch/parisc/kernel/vmlinux.lds.S
26@@ -50,8 +50,10 @@ SECTIONS
27 . = KERNEL_BINARY_TEXT_START;
28
29 _text = .; /* Text and read-only data */
30- .text ALIGN(16) : {
31+ .head ALIGN(16) : {
32 HEAD_TEXT
33+ } = 0
34+ .text ALIGN(16) : {
35 TEXT_TEXT
36 SCHED_TEXT
37 LOCK_TEXT
38@@ -65,7 +67,7 @@ SECTIONS
39 *(.fixup)
40 *(.lock.text) /* out-of-line lock text */
41 *(.gnu.warning)
42- } = 0
43+ }
44 /* End of text section */
45 _etext = .;
46
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch
new file mode 100644
index 00000000..45a00c5f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch
@@ -0,0 +1,142 @@
1From 4eb3b7f46aefa5899d72767e3bf1a826fd563a7a Mon Sep 17 00:00:00 2001
2From: James Bottomley <JBottomley@Parallels.com>
3Date: Mon, 21 May 2012 07:49:01 +0100
4Subject: [PATCH 20/86] fix TLB fault path on PA2.0 narrow systems
5
6commit 2f649c1f6f0fef445ce79a19b79e5ce8fe9d7f19 upstream.
7
8commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376
9Author: James Bottomley <JBottomley@Parallels.com>
10
11 [PARISC] fix PA1.1 oops on boot
12
13Didn't quite fix the crash on boot. It moved it from PA1.1 processors to
14PA2.0 narrow kernels. The final fix is to make sure the [id]tlb_miss_20 paths
15also work. Even on narrow systems, these paths require using the wide
16instructions becuase the tlb insertion format is wide. Fix this by
17conditioning the dep[wd],z on whether we're being called from _11 or _20[w]
18paths.
19
20Tested-by: Helge Deller <deller@gmx.de>
21Signed-off-by: James Bottomley <JBottomley@Parallels.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 arch/parisc/kernel/entry.S | 30 +++++++++++++++++-------------
25 1 file changed, 17 insertions(+), 13 deletions(-)
26
27diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
28index 5350342..07ef351 100644
29--- a/arch/parisc/kernel/entry.S
30+++ b/arch/parisc/kernel/entry.S
31@@ -552,7 +552,7 @@
32 * entry (identifying the physical page) and %r23 up with
33 * the from tlb entry (or nothing if only a to entry---for
34 * clear_user_page_asm) */
35- .macro do_alias spc,tmp,tmp1,va,pte,prot,fault
36+ .macro do_alias spc,tmp,tmp1,va,pte,prot,fault,patype
37 cmpib,COND(<>),n 0,\spc,\fault
38 ldil L%(TMPALIAS_MAP_START),\tmp
39 #if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000)
40@@ -581,11 +581,15 @@
41 */
42 cmpiclr,= 0x01,\tmp,%r0
43 ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
44-#ifdef CONFIG_64BIT
45+.ifc \patype,20
46 depd,z \prot,8,7,\prot
47-#else
48+.else
49+.ifc \patype,11
50 depw,z \prot,8,7,\prot
51-#endif
52+.else
53+ .error "undefined PA type to do_alias"
54+.endif
55+.endif
56 /*
57 * OK, it is in the temp alias region, check whether "from" or "to".
58 * Check "subtle" note in pacache.S re: r23/r26.
59@@ -1189,7 +1193,7 @@ dtlb_miss_20w:
60 nop
61
62 dtlb_check_alias_20w:
63- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
64+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20
65
66 idtlbt pte,prot
67
68@@ -1213,7 +1217,7 @@ nadtlb_miss_20w:
69 nop
70
71 nadtlb_check_alias_20w:
72- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
73+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20
74
75 idtlbt pte,prot
76
77@@ -1245,7 +1249,7 @@ dtlb_miss_11:
78 nop
79
80 dtlb_check_alias_11:
81- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
82+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,11
83
84 idtlba pte,(va)
85 idtlbp prot,(va)
86@@ -1277,7 +1281,7 @@ nadtlb_miss_11:
87 nop
88
89 nadtlb_check_alias_11:
90- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
91+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,11
92
93 idtlba pte,(va)
94 idtlbp prot,(va)
95@@ -1304,7 +1308,7 @@ dtlb_miss_20:
96 nop
97
98 dtlb_check_alias_20:
99- do_alias spc,t0,t1,va,pte,prot,dtlb_fault
100+ do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20
101
102 idtlbt pte,prot
103
104@@ -1330,7 +1334,7 @@ nadtlb_miss_20:
105 nop
106
107 nadtlb_check_alias_20:
108- do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate
109+ do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20
110
111 idtlbt pte,prot
112
113@@ -1457,7 +1461,7 @@ naitlb_miss_20w:
114 nop
115
116 naitlb_check_alias_20w:
117- do_alias spc,t0,t1,va,pte,prot,naitlb_fault
118+ do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20
119
120 iitlbt pte,prot
121
122@@ -1511,7 +1515,7 @@ naitlb_miss_11:
123 nop
124
125 naitlb_check_alias_11:
126- do_alias spc,t0,t1,va,pte,prot,itlb_fault
127+ do_alias spc,t0,t1,va,pte,prot,itlb_fault,11
128
129 iitlba pte,(%sr0, va)
130 iitlbp prot,(%sr0, va)
131@@ -1557,7 +1561,7 @@ naitlb_miss_20:
132 nop
133
134 naitlb_check_alias_20:
135- do_alias spc,t0,t1,va,pte,prot,naitlb_fault
136+ do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20
137
138 iitlbt pte,prot
139
140--
1411.7.9.5
142
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch
new file mode 100644
index 00000000..ae85f302
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch
@@ -0,0 +1,43 @@
1From d6c8a717c65d6ffaf27d7eead214275785dfd47d Mon Sep 17 00:00:00 2001
2From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
3Date: Wed, 16 May 2012 22:35:57 +0200
4Subject: [PATCH 21/86] iwlwifi: update BT traffic load states correctly
5
6commit 882dde8eb0d49ce0f853f8f4084dde56a21fe55f upstream.
7
8When BT traffic load changes from its
9previous state, a new LQ command needs to be
10sent down to the firmware. This needs to
11be done only once per change. The state
12variable that keeps track of this change is
13last_bt_traffic_load. However, it was not
14being updated when the change had been
15handled. Not updating this variable was
16causing a flood of advanced BT config
17commands to be sent to the firmware. Fix
18this.
19
20Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
21Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
22Signed-off-by: Johannes Berg <johannes.berg@intel.com>
23Signed-off-by: John W. Linville <linville@tuxdriver.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 1 +
27 1 file changed, 1 insertion(+)
28
29diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
30index 66118ce..9ba2c1b 100644
31--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
32+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
33@@ -886,6 +886,7 @@ static void rs_bt_update_lq(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
34 if ((priv->bt_traffic_load != priv->last_bt_traffic_load) ||
35 (priv->bt_full_concurrent != full_concurrent)) {
36 priv->bt_full_concurrent = full_concurrent;
37+ priv->last_bt_traffic_load = priv->bt_traffic_load;
38
39 /* Update uCode's rate table. */
40 tbl = &(lq_sta->lq_info[lq_sta->active_tbl]);
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch
new file mode 100644
index 00000000..e07210e1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch
@@ -0,0 +1,84 @@
1From 1b2a3d0a7a21c97a9803bafe00e150d6b7d6b7c3 Mon Sep 17 00:00:00 2001
2From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
3Date: Wed, 16 May 2012 22:35:59 +0200
4Subject: [PATCH 22/86] iwlwifi: do not use shadow registers by default
5
6commit 66a770729a5cdd24efed8afa5258f81232d8bba2 upstream.
7
8Shadow registers in the device are meant to
9allow the driver to update certain device
10registers without needing to wake up all
11components of the device. However, using
12this feature in the device causes
13communication between the driver and the
14device to become unreliable, resulting in
15host command timeouts.
16
17Disable this feature by default till a fix is
18available for the bug.
19
20Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
21Signed-off-by: Johannes Berg <johannes.berg@intel.com>
22Signed-off-by: John W. Linville <linville@tuxdriver.com>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 drivers/net/wireless/iwlwifi/iwl-2000.c | 4 ++--
26 drivers/net/wireless/iwlwifi/iwl-6000.c | 6 +++---
27 2 files changed, 5 insertions(+), 5 deletions(-)
28
29diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c
30index 9823e41..a97a52a 100644
31--- a/drivers/net/wireless/iwlwifi/iwl-2000.c
32+++ b/drivers/net/wireless/iwlwifi/iwl-2000.c
33@@ -211,7 +211,7 @@ static struct iwl_base_params iwl2000_base_params = {
34 .chain_noise_scale = 1000,
35 .wd_timeout = IWL_DEF_WD_TIMEOUT,
36 .max_event_log_size = 512,
37- .shadow_reg_enable = true,
38+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
39 .hd_v2 = true,
40 };
41
42@@ -230,7 +230,7 @@ static struct iwl_base_params iwl2030_base_params = {
43 .chain_noise_scale = 1000,
44 .wd_timeout = IWL_LONG_WD_TIMEOUT,
45 .max_event_log_size = 512,
46- .shadow_reg_enable = true,
47+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
48 .hd_v2 = true,
49 };
50
51diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
52index b4f809c..0b9f797 100644
53--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
54+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
55@@ -308,7 +308,7 @@ static struct iwl_base_params iwl6000_base_params = {
56 .chain_noise_scale = 1000,
57 .wd_timeout = IWL_DEF_WD_TIMEOUT,
58 .max_event_log_size = 512,
59- .shadow_reg_enable = true,
60+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
61 };
62
63 static struct iwl_base_params iwl6050_base_params = {
64@@ -325,7 +325,7 @@ static struct iwl_base_params iwl6050_base_params = {
65 .chain_noise_scale = 1500,
66 .wd_timeout = IWL_DEF_WD_TIMEOUT,
67 .max_event_log_size = 1024,
68- .shadow_reg_enable = true,
69+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
70 };
71 static struct iwl_base_params iwl6000_g2_base_params = {
72 .eeprom_size = OTP_LOW_IMAGE_SIZE,
73@@ -341,7 +341,7 @@ static struct iwl_base_params iwl6000_g2_base_params = {
74 .chain_noise_scale = 1000,
75 .wd_timeout = IWL_LONG_WD_TIMEOUT,
76 .max_event_log_size = 512,
77- .shadow_reg_enable = true,
78+ .shadow_reg_enable = false, /* TODO: fix bugs using this feature */
79 };
80
81 static struct iwl_ht_params iwl6000_ht_params = {
82--
831.7.9.5
84
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch
new file mode 100644
index 00000000..63e29df7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch
@@ -0,0 +1,69 @@
1From 430e704f68d8b8c21a7d764e1f0ea94614a303e2 Mon Sep 17 00:00:00 2001
2From: Grazvydas Ignotas <notasas@gmail.com>
3Date: Fri, 18 May 2012 03:04:08 +0300
4Subject: [PATCH 23/86] wl1251: fix oops on early interrupt
5
6commit f380f2c4a12e913356bd49f8790ec1063c4fe9f8 upstream.
7
8This driver disables interrupt just after requesting it and enables it
9later, after interface is up. However currently there is a time window
10between request_irq() and disable_irq() where if interrupt arrives, the
11driver oopses because it's not yet ready to process it. This can be
12reproduced by inserting the module, associating and removing the module
13multiple times.
14
15Eliminate this race by setting IRQF_NOAUTOEN flag before request_irq().
16
17Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
18Signed-off-by: John W. Linville <linville@tuxdriver.com>
19[bwh: Backported to 3.2: adjust filename]
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/net/wireless/wl1251/sdio.c | 2 +-
23 drivers/net/wireless/wl1251/spi.c | 3 +--
24 2 files changed, 2 insertions(+), 3 deletions(-)
25
26diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c
27index 1b851f6..e2750a1 100644
28--- a/drivers/net/wireless/wl1251/sdio.c
29+++ b/drivers/net/wireless/wl1251/sdio.c
30@@ -260,6 +260,7 @@ static int wl1251_sdio_probe(struct sdio_func *func,
31 }
32
33 if (wl->irq) {
34+ irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
35 ret = request_irq(wl->irq, wl1251_line_irq, 0, "wl1251", wl);
36 if (ret < 0) {
37 wl1251_error("request_irq() failed: %d", ret);
38@@ -267,7 +268,6 @@ static int wl1251_sdio_probe(struct sdio_func *func,
39 }
40
41 irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
42- disable_irq(wl->irq);
43
44 wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
45 wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
46diff --git a/drivers/net/wireless/wl1251/spi.c b/drivers/net/wireless/wl1251/spi.c
47index eaa5f95..134ae9c 100644
48--- a/drivers/net/wireless/wl1251/spi.c
49+++ b/drivers/net/wireless/wl1251/spi.c
50@@ -281,6 +281,7 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi)
51
52 wl->use_eeprom = pdata->use_eeprom;
53
54+ irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
55 ret = request_irq(wl->irq, wl1251_irq, 0, DRIVER_NAME, wl);
56 if (ret < 0) {
57 wl1251_error("request_irq() failed: %d", ret);
58@@ -289,8 +290,6 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi)
59
60 irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
61
62- disable_irq(wl->irq);
63-
64 ret = wl1251_init_ieee80211(wl);
65 if (ret)
66 goto out_irq;
67--
681.7.9.5
69
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch
new file mode 100644
index 00000000..0eacfc1b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch
@@ -0,0 +1,37 @@
1From b93bea69232a6e245feb4094ffbb43181a057a31 Mon Sep 17 00:00:00 2001
2From: Trond Myklebust <Trond.Myklebust@netapp.com>
3Date: Mon, 28 May 2012 11:36:28 -0400
4Subject: [PATCH 24/86] NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error
5 instead of EIO
6
7commit fb13bfa7e1bcfdcfdece47c24b62f1a1cad957e9 upstream.
8
9If a file OPEN is denied due to a share lock, the resulting
10NFS4ERR_SHARE_DENIED is currently mapped to the default EIO.
11This patch adds a more appropriate mapping, and brings Linux
12into line with what Solaris 10 does.
13
14See https://bugzilla.kernel.org/show_bug.cgi?id=43286
15
16Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 fs/nfs/nfs4proc.c | 2 ++
20 1 file changed, 2 insertions(+)
21
22diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
23index 03d9b90..a3cae5d 100644
24--- a/fs/nfs/nfs4proc.c
25+++ b/fs/nfs/nfs4proc.c
26@@ -96,6 +96,8 @@ static int nfs4_map_errors(int err)
27 case -NFS4ERR_BADOWNER:
28 case -NFS4ERR_BADNAME:
29 return -EINVAL;
30+ case -NFS4ERR_SHARE_DENIED:
31+ return -EACCES;
32 default:
33 dprintk("%s could not handle NFSv4 error %d\n",
34 __func__, -err);
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch
new file mode 100644
index 00000000..4f3f1651
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch
@@ -0,0 +1,40 @@
1From cce4054d32b88b0f9402746063937e36af798333 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Wed, 23 May 2012 11:48:59 -0400
4Subject: [PATCH 25/86] drm/radeon: fix XFX quirk
5
6commit 1ebf169ad4dc68f18cc0dab35163b0f324fc6c41 upstream.
7
8Only override the ddc bus if the connector doesn't have
9a valid one. The existing code overrode the ddc bus for
10all connectors even if it had ddc bus.
11
12Fixes ddc on another XFX card with the same pci ids that
13was broken by the quirk overwriting the correct ddc bus.
14
15Reported-by: Mehdi Aqadjani Memar <m.aqadjanimemar@student.ru.nl>
16Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
17Signed-off-by: Dave Airlie <airlied@redhat.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/gpu/drm/radeon/radeon_atombios.c | 4 +++-
21 1 file changed, 3 insertions(+), 1 deletion(-)
22
23diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
24index 8e1532f..9d2c369 100644
25--- a/drivers/gpu/drm/radeon/radeon_atombios.c
26+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
27@@ -438,7 +438,9 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
28 */
29 if ((dev->pdev->device == 0x9498) &&
30 (dev->pdev->subsystem_vendor == 0x1682) &&
31- (dev->pdev->subsystem_device == 0x2452)) {
32+ (dev->pdev->subsystem_device == 0x2452) &&
33+ (i2c_bus->valid == false) &&
34+ !(supported_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))) {
35 struct radeon_device *rdev = dev->dev_private;
36 *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93);
37 }
38--
391.7.9.5
40
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch
new file mode 100644
index 00000000..ee6bd618
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch
@@ -0,0 +1,92 @@
1From 1e0f99c0848ee2dfcc5a814f141c2c81c20a23ca Mon Sep 17 00:00:00 2001
2From: Felix Fietkau <nbd@openwrt.org>
3Date: Thu, 24 May 2012 14:32:20 +0200
4Subject: [PATCH 26/86] ath9k: fix a use-after-free-bug when
5 ath_tx_setup_buffer() fails
6
7commit 81357a281dcc454841532c46b30e6f2ba12b73ea upstream.
8
9ath_tx_setup_buffer() can fail if there is no ath_buf left, or if mapping DMA
10failed. In this case it frees the skb passed to it.
11If ath_tx_setup_buffer is called from ath_tx_form_aggr, the skb is still
12linked into the tid buffer list and must be dequeued before being released.
13
14Signed-off-by: Felix Fietkau <nbd@openwrt.org>
15Signed-off-by: John W. Linville <linville@tuxdriver.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/net/wireless/ath/ath9k/xmit.c | 16 ++++++++++------
19 1 file changed, 10 insertions(+), 6 deletions(-)
20
21diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
22index 03b0a65..76fd277 100644
23--- a/drivers/net/wireless/ath/ath9k/xmit.c
24+++ b/drivers/net/wireless/ath/ath9k/xmit.c
25@@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
26 static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
27 struct ath_txq *txq,
28 struct ath_atx_tid *tid,
29- struct sk_buff *skb);
30+ struct sk_buff *skb,
31+ bool dequeue);
32
33 enum {
34 MCS_HT20,
35@@ -761,7 +762,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
36 fi = get_frame_info(skb);
37 bf = fi->bf;
38 if (!fi->bf)
39- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
40+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, true);
41
42 if (!bf)
43 continue;
44@@ -1669,7 +1670,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
45 return;
46 }
47
48- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
49+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
50 if (!bf)
51 return;
52
53@@ -1696,7 +1697,7 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
54
55 bf = fi->bf;
56 if (!bf)
57- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
58+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, false);
59
60 if (!bf)
61 return;
62@@ -1761,7 +1762,8 @@ u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate)
63 static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
64 struct ath_txq *txq,
65 struct ath_atx_tid *tid,
66- struct sk_buff *skb)
67+ struct sk_buff *skb,
68+ bool dequeue)
69 {
70 struct ath_common *common = ath9k_hw_common(sc->sc_ah);
71 struct ath_frame_info *fi = get_frame_info(skb);
72@@ -1802,6 +1804,8 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
73 return bf;
74
75 error:
76+ if (dequeue)
77+ __skb_unlink(skb, &tid->buf_q);
78 dev_kfree_skb_any(skb);
79 return NULL;
80 }
81@@ -1833,7 +1837,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,
82 */
83 ath_tx_send_ampdu(sc, tid, skb, txctl);
84 } else {
85- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
86+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
87 if (!bf)
88 goto out;
89
90--
911.7.9.5
92
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch
new file mode 100644
index 00000000..d357b19b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch
@@ -0,0 +1,53 @@
1From 8446a84cc5885f2d4b3816dccac474f97fc047a9 Mon Sep 17 00:00:00 2001
2From: Eyal Shapira <eyal@wizery.com>
3Date: Tue, 29 May 2012 02:00:22 -0700
4Subject: [PATCH 27/86] mac80211: fix ADDBA declined after suspend with wowlan
5
6commit 7b21aea04d084916ac4e0e8852dcc9cd60ec0d1d upstream.
7
8WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared
9when resuming in case of wowlan. This causes further ADDBA requests
10received to be rejected. Fix it by clearing it in the wowlan path
11as well.
12
13Signed-off-by: Eyal Shapira <eyal@wizery.com>
14Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
15Signed-off-by: John W. Linville <linville@tuxdriver.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 net/mac80211/util.c | 12 ++++++------
19 1 file changed, 6 insertions(+), 6 deletions(-)
20
21diff --git a/net/mac80211/util.c b/net/mac80211/util.c
22index d5230ec..7095ae5 100644
23--- a/net/mac80211/util.c
24+++ b/net/mac80211/util.c
25@@ -1111,6 +1111,12 @@ int ieee80211_reconfig(struct ieee80211_local *local)
26 }
27 }
28
29+ /* add back keys */
30+ list_for_each_entry(sdata, &local->interfaces, list)
31+ if (ieee80211_sdata_running(sdata))
32+ ieee80211_enable_keys(sdata);
33+
34+ wake_up:
35 /*
36 * Clear the WLAN_STA_BLOCK_BA flag so new aggregation
37 * sessions can be established after a resume.
38@@ -1132,12 +1138,6 @@ int ieee80211_reconfig(struct ieee80211_local *local)
39 mutex_unlock(&local->sta_mtx);
40 }
41
42- /* add back keys */
43- list_for_each_entry(sdata, &local->interfaces, list)
44- if (ieee80211_sdata_running(sdata))
45- ieee80211_enable_keys(sdata);
46-
47- wake_up:
48 ieee80211_wake_queues_by_reason(hw,
49 IEEE80211_QUEUE_STOP_REASON_SUSPEND);
50
51--
521.7.9.5
53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch
new file mode 100644
index 00000000..56441d00
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch
@@ -0,0 +1,81 @@
1From 078ef70fff8b069bb9bc4eb27aa649ee8aa977dd Mon Sep 17 00:00:00 2001
2From: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
3Date: Tue, 29 May 2012 15:06:22 -0700
4Subject: [PATCH 28/86] mm/fork: fix overflow in vma length when copying mmap
5 on clone
6
7commit 7edc8b0ac16cbaed7cb4ea4c6b95ce98d2997e84 upstream.
8
9The vma length in dup_mmap is calculated and stored in a unsigned int,
10which is insufficient and hence overflows for very large maps (beyond
1116TB). The following program demonstrates this:
12
13#include <stdio.h>
14#include <unistd.h>
15#include <sys/mman.h>
16
17#define GIG 1024 * 1024 * 1024L
18#define EXTENT 16393
19
20int main(void)
21{
22 int i, r;
23 void *m;
24 char buf[1024];
25
26 for (i = 0; i < EXTENT; i++) {
27 m = mmap(NULL, (size_t) 1 * 1024 * 1024 * 1024L,
28 PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
29
30 if (m == (void *)-1)
31 printf("MMAP Failed: %d\n", m);
32 else
33 printf("%d : MMAP returned %p\n", i, m);
34
35 r = fork();
36
37 if (r == 0) {
38 printf("%d: successed\n", i);
39 return 0;
40 } else if (r < 0)
41 printf("FORK Failed: %d\n", r);
42 else if (r > 0)
43 wait(NULL);
44 }
45 return 0;
46}
47
48Increase the storage size of the result to unsigned long, which is
49sufficient for storing the difference between addresses.
50
51Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
52Cc: Tejun Heo <tj@kernel.org>
53Cc: Oleg Nesterov <oleg@redhat.com>
54Cc: Jens Axboe <axboe@kernel.dk>
55Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
56Acked-by: Hugh Dickins <hughd@google.com>
57Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
58Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
59[bwh: Backported to 3.2: adjust context]
60Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
61---
62 kernel/fork.c | 3 ++-
63 1 file changed, 2 insertions(+), 1 deletion(-)
64
65diff --git a/kernel/fork.c b/kernel/fork.c
66index 26f1ab0..79ee71f 100644
67--- a/kernel/fork.c
68+++ b/kernel/fork.c
69@@ -352,7 +352,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
70 }
71 charge = 0;
72 if (mpnt->vm_flags & VM_ACCOUNT) {
73- unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
74+ unsigned long len;
75+ len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
76 if (security_vm_enough_memory(len))
77 goto fail_nomem;
78 charge = len;
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch
new file mode 100644
index 00000000..efa5eeb7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch
@@ -0,0 +1,65 @@
1From cf8d6db03ffac6e6a8fa566942bb47d2cc2957bf Mon Sep 17 00:00:00 2001
2From: Michal Hocko <mhocko@suse.cz>
3Date: Tue, 29 May 2012 15:06:45 -0700
4Subject: [PATCH 29/86] mm: consider all swapped back pages in used-once logic
5
6commit e48982734ea0500d1eba4f9d96195acc5406cad6 upstream.
7
8Commit 645747462435 ("vmscan: detect mapped file pages used only once")
9made mapped pages have another round in inactive list because they might
10be just short lived and so we could consider them again next time. This
11heuristic helps to reduce pressure on the active list with a streaming
12IO worklods.
13
14This patch fixes a regression introduced by this commit for heavy shmem
15based workloads because unlike Anon pages, which are excluded from this
16heuristic because they are usually long lived, shmem pages are handled
17as a regular page cache.
18
19This doesn't work quite well, unfortunately, if the workload is mostly
20backed by shmem (in memory database sitting on 80% of memory) with a
21streaming IO in the background (backup - up to 20% of memory). Anon
22inactive list is full of (dirty) shmem pages when watermarks are hit.
23Shmem pages are kept in the inactive list (they are referenced) in the
24first round and it is hard to reclaim anything else so we reach lower
25scanning priorities very quickly which leads to an excessive swap out.
26
27Let's fix this by excluding all swap backed pages (they tend to be long
28lived wrt. the regular page cache anyway) from used-once heuristic and
29rather activate them if they are referenced.
30
31The customer's workload is shmem backed database (80% of RAM) and they
32are measuring transactions/s with an IO in the background (20%).
33Transactions touch more or less random rows in the table. The
34transaction rate fell by a factor of 3 (in the worst case) because of
35commit 64574746. This patch restores the previous numbers.
36
37Signed-off-by: Michal Hocko <mhocko@suse.cz>
38Acked-by: Johannes Weiner <hannes@cmpxchg.org>
39Cc: Mel Gorman <mel@csn.ul.ie>
40Cc: Minchan Kim <minchan@kernel.org>
41Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
42Reviewed-by: Rik van Riel <riel@redhat.com>
43Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
44Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
45Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
46---
47 mm/vmscan.c | 2 +-
48 1 file changed, 1 insertion(+), 1 deletion(-)
49
50diff --git a/mm/vmscan.c b/mm/vmscan.c
51index cb33d9c..fbe2d2c 100644
52--- a/mm/vmscan.c
53+++ b/mm/vmscan.c
54@@ -697,7 +697,7 @@ static enum page_references page_check_references(struct page *page,
55 return PAGEREF_RECLAIM;
56
57 if (referenced_ptes) {
58- if (PageAnon(page))
59+ if (PageSwapBacked(page))
60 return PAGEREF_ACTIVATE;
61 /*
62 * All mapped pages start out with page table
63--
641.7.9.5
65
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch
new file mode 100644
index 00000000..eb99e735
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch
@@ -0,0 +1,101 @@
1From a82ac9b8fd3715f2bb17cd888fad25cfefa4bccb Mon Sep 17 00:00:00 2001
2From: Dave Hansen <dave@linux.vnet.ibm.com>
3Date: Fri, 18 May 2012 11:46:30 -0700
4Subject: [PATCH 30/86] hugetlb: fix resv_map leak in error path
5
6commit c50ac050811d6485616a193eb0f37bfbd191cc89 upstream.
7
8When called for anonymous (non-shared) mappings, hugetlb_reserve_pages()
9does a resv_map_alloc(). It depends on code in hugetlbfs's
10vm_ops->close() to release that allocation.
11
12However, in the mmap() failure path, we do a plain unmap_region() without
13the remove_vma() which actually calls vm_ops->close().
14
15This is a decent fix. This leak could get reintroduced if new code (say,
16after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return
17an error. But, I think it would have to unroll the reservation anyway.
18
19Christoph's test case:
20
21 http://marc.info/?l=linux-mm&m=133728900729735
22
23Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
24[Christoph Lameter: I have rediffed the patch against 2.6.32 and 3.2.0.]
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 mm/hugetlb.c | 28 ++++++++++++++++++++++------
28 1 file changed, 22 insertions(+), 6 deletions(-)
29
30diff --git a/mm/hugetlb.c b/mm/hugetlb.c
31index 7120c2e..c715bb9 100644
32--- a/mm/hugetlb.c
33+++ b/mm/hugetlb.c
34@@ -2068,6 +2068,15 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma)
35 kref_get(&reservations->refs);
36 }
37
38+static void resv_map_put(struct vm_area_struct *vma)
39+{
40+ struct resv_map *reservations = vma_resv_map(vma);
41+
42+ if (!reservations)
43+ return;
44+ kref_put(&reservations->refs, resv_map_release);
45+}
46+
47 static void hugetlb_vm_op_close(struct vm_area_struct *vma)
48 {
49 struct hstate *h = hstate_vma(vma);
50@@ -2083,7 +2092,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
51 reserve = (end - start) -
52 region_count(&reservations->regions, start, end);
53
54- kref_put(&reservations->refs, resv_map_release);
55+ resv_map_put(vma);
56
57 if (reserve) {
58 hugetlb_acct_memory(h, -reserve);
59@@ -2884,12 +2893,16 @@ int hugetlb_reserve_pages(struct inode *inode,
60 set_vma_resv_flags(vma, HPAGE_RESV_OWNER);
61 }
62
63- if (chg < 0)
64- return chg;
65+ if (chg < 0) {
66+ ret = chg;
67+ goto out_err;
68+ }
69
70 /* There must be enough filesystem quota for the mapping */
71- if (hugetlb_get_quota(inode->i_mapping, chg))
72- return -ENOSPC;
73+ if (hugetlb_get_quota(inode->i_mapping, chg)) {
74+ ret = -ENOSPC;
75+ goto out_err;
76+ }
77
78 /*
79 * Check enough hugepages are available for the reservation.
80@@ -2898,7 +2911,7 @@ int hugetlb_reserve_pages(struct inode *inode,
81 ret = hugetlb_acct_memory(h, chg);
82 if (ret < 0) {
83 hugetlb_put_quota(inode->i_mapping, chg);
84- return ret;
85+ goto out_err;
86 }
87
88 /*
89@@ -2915,6 +2928,9 @@ int hugetlb_reserve_pages(struct inode *inode,
90 if (!vma || vma->vm_flags & VM_MAYSHARE)
91 region_add(&inode->i_mapping->private_list, from, to);
92 return 0;
93+out_err:
94+ resv_map_put(vma);
95+ return ret;
96 }
97
98 void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed)
99--
1001.7.9.5
101
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch
new file mode 100644
index 00000000..002d8e8c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch
@@ -0,0 +1,63 @@
1From ac48cea598418be2acfa451a3488cdd51570641e Mon Sep 17 00:00:00 2001
2From: Minchan Kim <minchan@kernel.org>
3Date: Tue, 10 Jan 2012 15:08:39 -0800
4Subject: [PATCH 31/86] mm/vmalloc.c: change void* into explict vm_struct*
5
6commit db1aecafef58b5dda39c4228debe2c845e4a27ab upstream.
7
8vmap_area->private is void* but we don't use the field for various purpose
9but use only for vm_struct. So change it to a vm_struct* with naming to
10improve for readability and type checking.
11
12Signed-off-by: Minchan Kim <minchan@kernel.org>
13Acked-by: David Rientjes <rientjes@google.com>
14Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
15Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 mm/vmalloc.c | 8 ++++----
19 1 file changed, 4 insertions(+), 4 deletions(-)
20
21diff --git a/mm/vmalloc.c b/mm/vmalloc.c
22index 21fdf46..877ca04 100644
23--- a/mm/vmalloc.c
24+++ b/mm/vmalloc.c
25@@ -256,7 +256,7 @@ struct vmap_area {
26 struct rb_node rb_node; /* address sorted rbtree */
27 struct list_head list; /* address sorted list */
28 struct list_head purge_list; /* "lazy purge" list */
29- void *private;
30+ struct vm_struct *vm;
31 struct rcu_head rcu_head;
32 };
33
34@@ -1285,7 +1285,7 @@ static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
35 vm->addr = (void *)va->va_start;
36 vm->size = va->va_end - va->va_start;
37 vm->caller = caller;
38- va->private = vm;
39+ va->vm = vm;
40 va->flags |= VM_VM_AREA;
41 }
42
43@@ -1408,7 +1408,7 @@ static struct vm_struct *find_vm_area(const void *addr)
44
45 va = find_vmap_area((unsigned long)addr);
46 if (va && va->flags & VM_VM_AREA)
47- return va->private;
48+ return va->vm;
49
50 return NULL;
51 }
52@@ -1427,7 +1427,7 @@ struct vm_struct *remove_vm_area(const void *addr)
53
54 va = find_vmap_area((unsigned long)addr);
55 if (va && va->flags & VM_VM_AREA) {
56- struct vm_struct *vm = va->private;
57+ struct vm_struct *vm = va->vm;
58
59 if (!(vm->flags & VM_UNLIST)) {
60 struct vm_struct *tmp, **p;
61--
621.7.9.5
63
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch
new file mode 100644
index 00000000..80181407
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch
@@ -0,0 +1,51 @@
1From 25ca214b138f89e6881a9fee029f1c55756bd8a3 Mon Sep 17 00:00:00 2001
2From: KyongHo <pullip.cho@samsung.com>
3Date: Tue, 29 May 2012 15:06:49 -0700
4Subject: [PATCH 32/86] mm: fix faulty initialization in vmalloc_init()
5
6commit dbda591d920b4c7692725b13e3f68ecb251e9080 upstream.
7
8The transfer of ->flags causes some of the static mapping virtual
9addresses to be prematurely freed (before the mapping is removed) because
10VM_LAZY_FREE gets "set" if tmp->flags has VM_IOREMAP set. This might
11cause subsequent vmalloc/ioremap calls to fail because it might allocate
12one of the freed virtual address ranges that aren't unmapped.
13
14va->flags has different types of flags from tmp->flags. If a region with
15VM_IOREMAP set is registered with vm_area_add_early(), it will be removed
16by __purge_vmap_area_lazy().
17
18Fix vmalloc_init() to correctly initialize vmap_area for the given
19vm_struct.
20
21Also initialise va->vm. If it is not set, find_vm_area() for the early
22vm regions will always fail.
23
24Signed-off-by: KyongHo Cho <pullip.cho@samsung.com>
25Cc: "Olav Haugan" <ohaugan@codeaurora.org>
26Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
27Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
28Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
29---
30 mm/vmalloc.c | 3 ++-
31 1 file changed, 2 insertions(+), 1 deletion(-)
32
33diff --git a/mm/vmalloc.c b/mm/vmalloc.c
34index 877ca04..577e51d 100644
35--- a/mm/vmalloc.c
36+++ b/mm/vmalloc.c
37@@ -1185,9 +1185,10 @@ void __init vmalloc_init(void)
38 /* Import existing vmlist entries. */
39 for (tmp = vmlist; tmp; tmp = tmp->next) {
40 va = kzalloc(sizeof(struct vmap_area), GFP_NOWAIT);
41- va->flags = tmp->flags | VM_VM_AREA;
42+ va->flags = VM_VM_AREA;
43 va->va_start = (unsigned long)tmp->addr;
44 va->va_end = va->va_start + tmp->size;
45+ va->vm = tmp;
46 __insert_vmap_area(va);
47 }
48
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch
new file mode 100644
index 00000000..e95f557a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch
@@ -0,0 +1,44 @@
1From f7eda9338b67b376df9a1d42b9533035dde4bf80 Mon Sep 17 00:00:00 2001
2From: James Bottomley <jbottomley@parallels.com>
3Date: Wed, 30 May 2012 09:45:39 +0000
4Subject: [PATCH 33/86] fix scsi_wait_scan
5
6commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream.
7
8Commit c751085943362143f84346d274e0011419c84202
9Author: Rafael J. Wysocki <rjw@sisk.pl>
10Date: Sun Apr 12 20:06:56 2009 +0200
11
12 PM/Hibernate: Wait for SCSI devices scan to complete during resume
13
14Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so
15fix it and backport to stable before removing it in 3.6.
16
17The breakage is caused because the function template in
18include/scsi/scsi_scan.h is defined to be a nop unless SCSI is built in.
19That means that in the modular case (which is every distro), the
20scsi_wait_scan module does a simple async_synchronize_full() instead of
21waiting for scans.
22
23Signed-off-by: James Bottomley <JBottomley@Parallels.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/scsi/scsi_wait_scan.c | 2 +-
27 1 file changed, 1 insertion(+), 1 deletion(-)
28
29diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c
30index 74708fc..ae78148 100644
31--- a/drivers/scsi/scsi_wait_scan.c
32+++ b/drivers/scsi/scsi_wait_scan.c
33@@ -12,7 +12,7 @@
34
35 #include <linux/module.h>
36 #include <linux/device.h>
37-#include <scsi/scsi_scan.h>
38+#include "scsi_priv.h"
39
40 static int __init wait_scan_init(void)
41 {
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch
new file mode 100644
index 00000000..df287529
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch
@@ -0,0 +1,70 @@
1From 17ceee89567f7c23b2f1eb1d44a323e20912dd59 Mon Sep 17 00:00:00 2001
2From: Dave Hansen <dave@linux.vnet.ibm.com>
3Date: Wed, 30 May 2012 07:51:07 -0700
4Subject: [PATCH 34/86] mm: fix vma_resv_map() NULL pointer
5
6commit 4523e1458566a0e8ecfaff90f380dd23acc44d27 upstream.
7
8hugetlb_reserve_pages() can be used for either normal file-backed
9hugetlbfs mappings, or MAP_HUGETLB. In the MAP_HUGETLB, semi-anonymous
10mode, there is not a VMA around. The new call to resv_map_put() assumed
11that there was, and resulted in a NULL pointer dereference:
12
13 BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
14 IP: vma_resv_map+0x9/0x30
15 PGD 141453067 PUD 1421e1067 PMD 0
16 Oops: 0000 [#1] PREEMPT SMP
17 ...
18 Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36
19 RIP: vma_resv_map+0x9/0x30
20 ...
21 Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0)
22 Call Trace:
23 resv_map_put+0xe/0x40
24 hugetlb_reserve_pages+0xa6/0x1d0
25 hugetlb_file_setup+0x102/0x2c0
26 newseg+0x115/0x360
27 ipcget+0x1ce/0x310
28 sys_shmget+0x5a/0x60
29 system_call_fastpath+0x16/0x1b
30
31This was reported by Dave Jones, but was reproducible with the
32libhugetlbfs test cases, so shame on me for not running them in the
33first place.
34
35With this, the oops is gone, and the output of libhugetlbfs's
36run_tests.py is identical to plain 3.4 again.
37
38[ Marked for stable, since this was introduced by commit c50ac050811d
39 ("hugetlb: fix resv_map leak in error path") which was also marked for
40 stable ]
41
42Reported-by: Dave Jones <davej@redhat.com>
43Cc: Mel Gorman <mel@csn.ul.ie>
44Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
45Cc: Christoph Lameter <cl@linux.com>
46Cc: Andrea Arcangeli <aarcange@redhat.com>
47Cc: Andrew Morton <akpm@linux-foundation.org>
48Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
49Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
50---
51 mm/hugetlb.c | 3 ++-
52 1 file changed, 2 insertions(+), 1 deletion(-)
53
54diff --git a/mm/hugetlb.c b/mm/hugetlb.c
55index c715bb9..5f5c545 100644
56--- a/mm/hugetlb.c
57+++ b/mm/hugetlb.c
58@@ -2929,7 +2929,8 @@ int hugetlb_reserve_pages(struct inode *inode,
59 region_add(&inode->i_mapping->private_list, from, to);
60 return 0;
61 out_err:
62- resv_map_put(vma);
63+ if (vma)
64+ resv_map_put(vma);
65 return ret;
66 }
67
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch
new file mode 100644
index 00000000..53bf5494
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch
@@ -0,0 +1,38 @@
1From 827eb1e22d5bbbd59b40cffc5d1e811c4d2e6a24 Mon Sep 17 00:00:00 2001
2From: Konrad Rzeszutek Wilk <konrad@darnok.org>
3Date: Wed, 30 May 2012 18:23:56 -0400
4Subject: [PATCH 35/86] x86, amd, xen: Avoid NULL pointer paravirt references
5
6commit 1ab46fd319bcf1fcd9fb6311727d532b580e4eba upstream.
7
8Stub out MSR methods that aren't actually needed. This fixes a crash
9as Xen Dom0 on AMD Trinity systems. A bigger patch should be added to
10remove the paravirt machinery completely for the methods which
11apparently have no users!
12
13Reported-by: Andre Przywara <andre.przywara@amd.com>
14Link: http://lkml.kernel.org/r/20120530222356.GA28417@andromeda.dapyr.net
15Signed-off-by: H. Peter Anvin <hpa@zytor.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/x86/xen/enlighten.c | 3 +++
19 1 file changed, 3 insertions(+)
20
21diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
22index e7c920b..cca659e 100644
23--- a/arch/x86/xen/enlighten.c
24+++ b/arch/x86/xen/enlighten.c
25@@ -982,7 +982,10 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = {
26 .wbinvd = native_wbinvd,
27
28 .read_msr = native_read_msr_safe,
29+ .rdmsr_regs = native_rdmsr_safe_regs,
30 .write_msr = xen_write_msr_safe,
31+ .wrmsr_regs = native_wrmsr_safe_regs,
32+
33 .read_tsc = native_read_tsc,
34 .read_pmc = native_read_pmc,
35
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch
new file mode 100644
index 00000000..e399e073
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch
@@ -0,0 +1,86 @@
1From e03e067f960f7714ac98fdef365cafff22086a6b Mon Sep 17 00:00:00 2001
2From: Joonsoo Kim <js1304@gmail.com>
3Date: Thu, 17 May 2012 00:13:02 +0900
4Subject: [PATCH 36/86] slub: fix a memory leak in get_partial_node()
5
6commit 02d7633fa567be7bf55a993b79d2a31b95ce2227 upstream.
7
8In the case which is below,
9
101. acquire slab for cpu partial list
112. free object to it by remote cpu
123. page->freelist = t
13
14then memory leak is occurred.
15
16Change acquire_slab() not to zap freelist when it works for cpu partial list.
17I think it is a sufficient solution for fixing a memory leak.
18
19Below is output of 'slabinfo -r kmalloc-256'
20when './perf stat -r 30 hackbench 50 process 4000 > /dev/null' is done.
21
22***Vanilla***
23Sizes (bytes) Slabs Debug Memory
24------------------------------------------------------------------------
25Object : 256 Total : 468 Sanity Checks : Off Total: 3833856
26SlabObj: 256 Full : 111 Redzoning : Off Used : 2004992
27SlabSiz: 8192 Partial: 302 Poisoning : Off Loss : 1828864
28Loss : 0 CpuSlab: 55 Tracking : Off Lalig: 0
29Align : 8 Objects: 32 Tracing : Off Lpadd: 0
30
31***Patched***
32Sizes (bytes) Slabs Debug Memory
33------------------------------------------------------------------------
34Object : 256 Total : 300 Sanity Checks : Off Total: 2457600
35SlabObj: 256 Full : 204 Redzoning : Off Used : 2348800
36SlabSiz: 8192 Partial: 33 Poisoning : Off Loss : 108800
37Loss : 0 CpuSlab: 63 Tracking : Off Lalig: 0
38Align : 8 Objects: 32 Tracing : Off Lpadd: 0
39
40Total and loss number is the impact of this patch.
41
42Acked-by: Christoph Lameter <cl@linux.com>
43Signed-off-by: Joonsoo Kim <js1304@gmail.com>
44Signed-off-by: Pekka Enberg <penberg@kernel.org>
45Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
46---
47 mm/slub.c | 9 ++++++---
48 1 file changed, 6 insertions(+), 3 deletions(-)
49
50diff --git a/mm/slub.c b/mm/slub.c
51index a99c785..af47188 100644
52--- a/mm/slub.c
53+++ b/mm/slub.c
54@@ -1506,15 +1506,19 @@ static inline void *acquire_slab(struct kmem_cache *s,
55 freelist = page->freelist;
56 counters = page->counters;
57 new.counters = counters;
58- if (mode)
59+ if (mode) {
60 new.inuse = page->objects;
61+ new.freelist = NULL;
62+ } else {
63+ new.freelist = freelist;
64+ }
65
66 VM_BUG_ON(new.frozen);
67 new.frozen = 1;
68
69 } while (!__cmpxchg_double_slab(s, page,
70 freelist, counters,
71- NULL, new.counters,
72+ new.freelist, new.counters,
73 "lock and freeze"));
74
75 remove_partial(n, page);
76@@ -1556,7 +1560,6 @@ static void *get_partial_node(struct kmem_cache *s,
77 object = t;
78 available = page->objects - page->inuse;
79 } else {
80- page->freelist = t;
81 available = put_cpu_partial(s, page, 0);
82 }
83 if (kmem_cache_debug(s) || available > s->cpu_partial / 2)
84--
851.7.9.5
86
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch
new file mode 100644
index 00000000..6fbcfa09
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch
@@ -0,0 +1,45 @@
1From ce325abe66432bbcf9d8dc2834d7c8c77f32ce52 Mon Sep 17 00:00:00 2001
2From: Eric Sandeen <sandeen@redhat.com>
3Date: Mon, 28 May 2012 14:17:25 -0400
4Subject: [PATCH 37/86] ext4: force ro mount if ext4_setup_super() fails
5
6commit 7e84b6216467b84cd332c8e567bf5aa113fd2f38 upstream.
7
8If ext4_setup_super() fails i.e. due to a too-high revision,
9the error is logged in dmesg but the fs is not mounted RO as
10indicated.
11
12Tested by:
13
14# mkfs.ext4 -r 4 /dev/sdb6
15# mount /dev/sdb6 /mnt/test
16# dmesg | grep "too high"
17[164919.759248] EXT4-fs (sdb6): revision level too high, forcing read-only mode
18# grep sdb6 /proc/mounts
19/dev/sdb6 /mnt/test2 ext4 rw,seclabel,relatime,data=ordered 0 0
20
21Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
22Signed-off-by: Eric Sandeen <sandeen@redhat.com>
23Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 fs/ext4/super.c | 3 ++-
27 1 file changed, 2 insertions(+), 1 deletion(-)
28
29diff --git a/fs/ext4/super.c b/fs/ext4/super.c
30index 961059b..c91811e 100644
31--- a/fs/ext4/super.c
32+++ b/fs/ext4/super.c
33@@ -3727,7 +3727,8 @@ no_journal:
34 goto failed_mount4;
35 }
36
37- ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY);
38+ if (ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY))
39+ sb->s_flags |= MS_RDONLY;
40
41 /* determine the minimum size of new large inodes, if present */
42 if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
43--
441.7.9.5
45
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch
new file mode 100644
index 00000000..60e970a6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch
@@ -0,0 +1,38 @@
1From 7d7a4c4be4fc37041962a101a848c38bf13dc0c4 Mon Sep 17 00:00:00 2001
2From: Andreas Dilger <adilger@dilger.ca>
3Date: Mon, 28 May 2012 17:02:25 -0400
4Subject: [PATCH 38/86] ext4: disallow hard-linked directory in ext4_lookup
5
6commit 7e936b737211e6b54e34b71a827e56b872e958d8 upstream.
7
8A hard-linked directory to its parent can cause the VFS to deadlock,
9and is a sign of a corrupted file system. So detect this case in
10ext4_lookup(), before the rmdir() lockup scenario can take place.
11
12Signed-off-by: Andreas Dilger <adilger@dilger.ca>
13Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 fs/ext4/namei.c | 6 ++++++
17 1 file changed, 6 insertions(+)
18
19diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
20index aa4c782..4dd0890 100644
21--- a/fs/ext4/namei.c
22+++ b/fs/ext4/namei.c
23@@ -1037,6 +1037,12 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, stru
24 EXT4_ERROR_INODE(dir, "bad inode number: %u", ino);
25 return ERR_PTR(-EIO);
26 }
27+ if (unlikely(ino == dir->i_ino)) {
28+ EXT4_ERROR_INODE(dir, "'%.*s' linked to parent dir",
29+ dentry->d_name.len,
30+ dentry->d_name.name);
31+ return ERR_PTR(-EIO);
32+ }
33 inode = ext4_iget(dir->i_sb, ino);
34 if (inode == ERR_PTR(-ESTALE)) {
35 EXT4_ERROR_INODE(dir,
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch
new file mode 100644
index 00000000..e2b0f241
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch
@@ -0,0 +1,33 @@
1From ec329940d4991f4051c3b8cf971aa2e67ad9da20 Mon Sep 17 00:00:00 2001
2From: Dmitry Maluka <D.Maluka@adbglobal.com>
3Date: Fri, 11 May 2012 20:51:51 +0300
4Subject: [PATCH 39/86] mtd: nand: fix scan_read_raw_oob
5
6commit 34a5704d91d6f8376a4c0a0143a1dd3eb3ccb37e upstream.
7
8It seems there is a bug in scan_read_raw_oob() in nand_bbt.c which
9should cause wrong functioning of NAND_BBT_SCANALLPAGES option.
10
11Artem: the patch did not apply and I had to amend it a bit.
12
13Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/mtd/nand/nand_bbt.c | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c
20index 69148ae..f024375 100644
21--- a/drivers/mtd/nand/nand_bbt.c
22+++ b/drivers/mtd/nand/nand_bbt.c
23@@ -324,6 +324,7 @@ static int scan_read_raw_oob(struct mtd_info *mtd, uint8_t *buf, loff_t offs,
24
25 buf += mtd->oobsize + mtd->writesize;
26 len -= mtd->writesize;
27+ offs += mtd->writesize;
28 }
29 return 0;
30 }
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch
new file mode 100644
index 00000000..cab17c9c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch
@@ -0,0 +1,48 @@
1From dcbd120f33b3df21a22bb7e09710f9f078c5b459 Mon Sep 17 00:00:00 2001
2From: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
3Date: Tue, 29 May 2012 11:02:21 -0700
4Subject: [PATCH 40/86] vfs: increment iversion when a file is truncated
5
6commit 799243a389bde0de10fa21ca1ca453d2fe538b85 upstream.
7
8When a file is truncated with truncate()/ftruncate() and then closed,
9iversion is not updated. This patch uses ATTR_SIZE flag as an indication
10to increment iversion.
11
12Mimi said:
13
14On fput(), i_version is used to detect and flag files that have changed
15and need to be re-measured in the IMA measurement policy. When a file
16is truncated with truncate()/ftruncate() and then closed, i_version is
17not updated. As a result, although the file has changed, it will not be
18re-measured and added to the IMA measurement list on subsequent access.
19
20Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
21Acked-by: Mimi Zohar <zohar@us.ibm.com>
22Cc: Al Viro <viro@zeniv.linux.org.uk>
23Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
24Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 fs/attr.c | 5 +++++
28 1 file changed, 5 insertions(+)
29
30diff --git a/fs/attr.c b/fs/attr.c
31index 7ee7ba4..b8f55c4 100644
32--- a/fs/attr.c
33+++ b/fs/attr.c
34@@ -176,6 +176,11 @@ int notify_change(struct dentry * dentry, struct iattr * attr)
35 return -EPERM;
36 }
37
38+ if ((ia_valid & ATTR_SIZE) && IS_I_VERSION(inode)) {
39+ if (attr->ia_size != inode->i_size)
40+ inode_inc_iversion(inode);
41+ }
42+
43 if ((ia_valid & ATTR_MODE)) {
44 mode_t amode = attr->ia_mode;
45 /* Flag setting protected by i_mutex */
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch
new file mode 100644
index 00000000..99722a55
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch
@@ -0,0 +1,37 @@
1From 7124b305f5c83709f41473a2cf6025bcdb9b88fe Mon Sep 17 00:00:00 2001
2From: Al Viro <viro@zeniv.linux.org.uk>
3Date: Tue, 29 May 2012 22:03:48 -0400
4Subject: [PATCH 41/86] vfs: umount_tree() might be called on subtree that had
5 never made it
6
7commit 63d37a84ab6004c235314ffd7a76c5eb28c2fae0 upstream.
8
9__mnt_make_shortterm() in there undoes the effect of __mnt_make_longterm()
10we'd done back when we set ->mnt_ns non-NULL; it should not be done to
11vfsmounts that had never gone through commit_tree() and friends. Kudos to
12lczerner for catching that one...
13
14Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 fs/namespace.c | 3 ++-
18 1 file changed, 2 insertions(+), 1 deletion(-)
19
20diff --git a/fs/namespace.c b/fs/namespace.c
21index cfc6d44..ca4913a 100644
22--- a/fs/namespace.c
23+++ b/fs/namespace.c
24@@ -1244,8 +1244,9 @@ void umount_tree(struct vfsmount *mnt, int propagate, struct list_head *kill)
25 list_del_init(&p->mnt_expire);
26 list_del_init(&p->mnt_list);
27 __touch_mnt_namespace(p->mnt_ns);
28+ if (p->mnt_ns)
29+ __mnt_make_shortterm(p);
30 p->mnt_ns = NULL;
31- __mnt_make_shortterm(p);
32 list_del_init(&p->mnt_child);
33 if (p->mnt_parent != p) {
34 p->mnt_parent->mnt_ghosts++;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch
new file mode 100644
index 00000000..e9720b22
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch
@@ -0,0 +1,36 @@
1From 1b72b00b0a3384ac8e6b2ddb6b06132e714e9441 Mon Sep 17 00:00:00 2001
2From: Theodore Ts'o <tytso@mit.edu>
3Date: Wed, 30 May 2012 23:00:16 -0400
4Subject: [PATCH 42/86] ext4: add missing save_error_info() to ext4_error()
5
6commit f3fc0210c0fc91900766c995f089c39170e68305 upstream.
7
8The ext4_error() function is missing a call to save_error_info().
9Since this is the function which marks the file system as containing
10an error, this oversight (which was introduced in 2.6.36) is quite
11significant, and should be backported to older stable kernels with
12high urgency.
13
14Reported-by: Ken Sumrall <ksumrall@google.com>
15Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
16Cc: ksumrall@google.com
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 fs/ext4/super.c | 1 +
20 1 file changed, 1 insertion(+)
21
22diff --git a/fs/ext4/super.c b/fs/ext4/super.c
23index c91811e..ab7aa3f 100644
24--- a/fs/ext4/super.c
25+++ b/fs/ext4/super.c
26@@ -480,6 +480,7 @@ void __ext4_error(struct super_block *sb, const char *function,
27 printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: comm %s: %pV\n",
28 sb->s_id, function, line, current->comm, &vaf);
29 va_end(args);
30+ save_error_info(sb, function, line);
31
32 ext4_handle_error(sb);
33 }
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch
new file mode 100644
index 00000000..7c69f666
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch
@@ -0,0 +1,35 @@
1From 881cf192607e150b2843d5a504a6c05bd6be8136 Mon Sep 17 00:00:00 2001
2From: Clemens Ladisch <clemens@ladisch.de>
3Date: Fri, 18 May 2012 18:00:43 +0200
4Subject: [PATCH 43/86] ALSA: usb-audio: fix rate_list memory leak
5
6commit 5cd5d7c44990658df6ab49f6253c39617c53b03d upstream.
7
8The array of sample rates is reallocated every time when opening
9the PCM device, but was freed only once when unplugging the device.
10
11Reported-by: "Alexander E. Patrakov" <patrakov@gmail.com>
12Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
13Signed-off-by: Takashi Iwai <tiwai@suse.de>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 sound/usb/pcm.c | 3 +++
17 1 file changed, 3 insertions(+)
18
19diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
20index 0220b0f..839165f 100644
21--- a/sound/usb/pcm.c
22+++ b/sound/usb/pcm.c
23@@ -698,6 +698,9 @@ static int snd_usb_pcm_check_knot(struct snd_pcm_runtime *runtime,
24 int count = 0, needs_knot = 0;
25 int err;
26
27+ kfree(subs->rate_list.list);
28+ subs->rate_list.list = NULL;
29+
30 list_for_each_entry(fp, &subs->fmt_list, list) {
31 if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS)
32 return 0;
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch
new file mode 100644
index 00000000..63a6bf4a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch
@@ -0,0 +1,32 @@
1From 63234d728c49257d747db57d3dfeb9989b9d040a Mon Sep 17 00:00:00 2001
2From: Salman Qazi <sqazi@google.com>
3Date: Thu, 31 May 2012 23:51:27 -0400
4Subject: [PATCH 44/86] ext4: add ext4_mb_unload_buddy in the error path
5
6commit 02b7831019ea4e7994968c84b5826fa8b248ffc8 upstream.
7
8ext4_free_blocks fails to pair an ext4_mb_load_buddy with a matching
9ext4_mb_unload_buddy when it fails a memory allocation.
10
11Signed-off-by: Salman Qazi <sqazi@google.com>
12Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 fs/ext4/mballoc.c | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
19index e2d8be8..382e4fc 100644
20--- a/fs/ext4/mballoc.c
21+++ b/fs/ext4/mballoc.c
22@@ -4693,6 +4693,7 @@ do_more:
23 */
24 new_entry = kmem_cache_alloc(ext4_free_ext_cachep, GFP_NOFS);
25 if (!new_entry) {
26+ ext4_mb_unload_buddy(&e4b);
27 err = -ENOMEM;
28 goto error_return;
29 }
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch
new file mode 100644
index 00000000..0fc4e4b7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch
@@ -0,0 +1,53 @@
1From 36ac3cf2860adbbe83743fd5ec6f89e54e67605c Mon Sep 17 00:00:00 2001
2From: Salman Qazi <sqazi@google.com>
3Date: Thu, 31 May 2012 23:52:14 -0400
4Subject: [PATCH 45/86] ext4: remove mb_groups before tearing down the
5 buddy_cache
6
7commit 95599968d19db175829fb580baa6b68939b320fb upstream.
8
9We can't have references held on pages in the s_buddy_cache while we are
10trying to truncate its pages and put the inode. All the pages must be
11gone before we reach clear_inode. This can only be gauranteed if we
12can prevent new users from grabbing references to s_buddy_cache's pages.
13
14The original bug can be reproduced and the bug fix can be verified by:
15
16while true; do mount -t ext4 /dev/ram0 /export/hda3/ram0; \
17 umount /export/hda3/ram0; done &
18
19while true; do cat /proc/fs/ext4/ram0/mb_groups; done
20
21Signed-off-by: Salman Qazi <sqazi@google.com>
22Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 fs/ext4/mballoc.c | 5 +++--
26 1 file changed, 3 insertions(+), 2 deletions(-)
27
28diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
29index 382e4fc..1d07c12 100644
30--- a/fs/ext4/mballoc.c
31+++ b/fs/ext4/mballoc.c
32@@ -2567,6 +2567,9 @@ int ext4_mb_release(struct super_block *sb)
33 struct ext4_sb_info *sbi = EXT4_SB(sb);
34 struct kmem_cache *cachep = get_groupinfo_cache(sb->s_blocksize_bits);
35
36+ if (sbi->s_proc)
37+ remove_proc_entry("mb_groups", sbi->s_proc);
38+
39 if (sbi->s_group_info) {
40 for (i = 0; i < ngroups; i++) {
41 grinfo = ext4_get_group_info(sb, i);
42@@ -2614,8 +2617,6 @@ int ext4_mb_release(struct super_block *sb)
43 }
44
45 free_percpu(sbi->s_locality_groups);
46- if (sbi->s_proc)
47- remove_proc_entry("mb_groups", sbi->s_proc);
48
49 return 0;
50 }
51--
521.7.9.5
53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch
new file mode 100644
index 00000000..96c23eca
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch
@@ -0,0 +1,84 @@
1From 08a5d338c177aeaff3fed888cf9a36feb07a033d Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Thu, 31 May 2012 18:53:36 -0400
4Subject: [PATCH 46/86] drm/radeon: fix bank information in tiling config
5
6commit 29d654067a98c1cb8874c774e5fd799a038af8a6 upstream.
7
8While there are cards with more than 8 mem banks, the max
9number of banks from a tiling perspective is 8, so cap
10the tiling config at 8 banks.
11
12Fixes:
13https://bugs.freedesktop.org/show_bug.cgi?id=43448
14
15Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
16Signed-off-by: Dave Airlie <airlied@redhat.com>
17[bwh: Backported to 3.2: fix up context and indentation for missing
18 IGP condition in ni.c]
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/gpu/drm/radeon/evergreen.c | 9 ++++++---
22 drivers/gpu/drm/radeon/ni.c | 6 ++++--
23 drivers/gpu/drm/radeon/rv770.c | 8 ++++++--
24 3 files changed, 16 insertions(+), 7 deletions(-)
25
26diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
27index 92c9628..88d080c 100644
28--- a/drivers/gpu/drm/radeon/evergreen.c
29+++ b/drivers/gpu/drm/radeon/evergreen.c
30@@ -2074,9 +2074,12 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
31 /* num banks is 8 on all fusion asics. 0 = 4, 1 = 8, 2 = 16 */
32 if (rdev->flags & RADEON_IS_IGP)
33 rdev->config.evergreen.tile_config |= 1 << 4;
34- else
35- rdev->config.evergreen.tile_config |=
36- ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4;
37+ else {
38+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
39+ rdev->config.evergreen.tile_config |= 1 << 4;
40+ else
41+ rdev->config.evergreen.tile_config |= 0 << 4;
42+ }
43 rdev->config.evergreen.tile_config |=
44 ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) << 8;
45 rdev->config.evergreen.tile_config |=
46diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
47index 0e57998..9e50814 100644
48--- a/drivers/gpu/drm/radeon/ni.c
49+++ b/drivers/gpu/drm/radeon/ni.c
50@@ -804,8 +804,10 @@ static void cayman_gpu_init(struct radeon_device *rdev)
51 rdev->config.cayman.tile_config |= (3 << 0);
52 break;
53 }
54- rdev->config.cayman.tile_config |=
55- ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4;
56+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
57+ rdev->config.cayman.tile_config |= 1 << 4;
58+ else
59+ rdev->config.cayman.tile_config |= 0 << 4;
60 rdev->config.cayman.tile_config |=
61 ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8;
62 rdev->config.cayman.tile_config |=
63diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
64index 23ae1c6..e3f01b8 100644
65--- a/drivers/gpu/drm/radeon/rv770.c
66+++ b/drivers/gpu/drm/radeon/rv770.c
67@@ -689,8 +689,12 @@ static void rv770_gpu_init(struct radeon_device *rdev)
68
69 if (rdev->family == CHIP_RV770)
70 gb_tiling_config |= BANK_TILING(1);
71- else
72- gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT);
73+ else {
74+ if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT)
75+ gb_tiling_config |= BANK_TILING(1);
76+ else
77+ gb_tiling_config |= BANK_TILING(0);
78+ }
79 rdev->config.rv770.tiling_nbanks = 4 << ((gb_tiling_config >> 4) & 0x3);
80 gb_tiling_config |= GROUP_SIZE((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT);
81 if ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT)
82--
831.7.9.5
84
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch
new file mode 100644
index 00000000..51d41d97
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch
@@ -0,0 +1,79 @@
1From b872949a1d4d4a7587bbbfa4adb1a69216c625a8 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Thu, 31 May 2012 18:54:43 -0400
4Subject: [PATCH 47/86] drm/radeon: properly program gart on rv740, juniper,
5 cypress, barts, hemlock
6
7commit 0b8c30bc4943137a4a36b9cb059b1cc684f5d702 upstream.
8
9Need to program an additional VM register. This doesn't not currently
10cause any problems, but allows us to program the proper backend
11map in a subsequent patch which should improve performance on these
12asics.
13
14Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
15Signed-off-by: Dave Airlie <airlied@redhat.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/gpu/drm/radeon/evergreen.c | 5 +++++
19 drivers/gpu/drm/radeon/evergreend.h | 1 +
20 drivers/gpu/drm/radeon/rv770.c | 2 ++
21 drivers/gpu/drm/radeon/rv770d.h | 1 +
22 4 files changed, 9 insertions(+)
23
24diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
25index 88d080c..7777c2f 100644
26--- a/drivers/gpu/drm/radeon/evergreen.c
27+++ b/drivers/gpu/drm/radeon/evergreen.c
28@@ -977,6 +977,11 @@ int evergreen_pcie_gart_enable(struct radeon_device *rdev)
29 WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
30 WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
31 WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
32+ if ((rdev->family == CHIP_JUNIPER) ||
33+ (rdev->family == CHIP_CYPRESS) ||
34+ (rdev->family == CHIP_HEMLOCK) ||
35+ (rdev->family == CHIP_BARTS))
36+ WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp);
37 }
38 WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp);
39 WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp);
40diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
41index e00039e..0128445 100644
42--- a/drivers/gpu/drm/radeon/evergreend.h
43+++ b/drivers/gpu/drm/radeon/evergreend.h
44@@ -230,6 +230,7 @@
45 #define MC_VM_MD_L1_TLB0_CNTL 0x2654
46 #define MC_VM_MD_L1_TLB1_CNTL 0x2658
47 #define MC_VM_MD_L1_TLB2_CNTL 0x265C
48+#define MC_VM_MD_L1_TLB3_CNTL 0x2698
49
50 #define FUS_MC_VM_MD_L1_TLB0_CNTL 0x265C
51 #define FUS_MC_VM_MD_L1_TLB1_CNTL 0x2660
52diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
53index e3f01b8..e36ba7f 100644
54--- a/drivers/gpu/drm/radeon/rv770.c
55+++ b/drivers/gpu/drm/radeon/rv770.c
56@@ -151,6 +151,8 @@ int rv770_pcie_gart_enable(struct radeon_device *rdev)
57 WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
58 WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
59 WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
60+ if (rdev->family == CHIP_RV740)
61+ WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp);
62 WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp);
63 WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp);
64 WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
65diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
66index 79fa588..7538092 100644
67--- a/drivers/gpu/drm/radeon/rv770d.h
68+++ b/drivers/gpu/drm/radeon/rv770d.h
69@@ -174,6 +174,7 @@
70 #define MC_VM_MD_L1_TLB0_CNTL 0x2654
71 #define MC_VM_MD_L1_TLB1_CNTL 0x2658
72 #define MC_VM_MD_L1_TLB2_CNTL 0x265C
73+#define MC_VM_MD_L1_TLB3_CNTL 0x2698
74 #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C
75 #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2038
76 #define MC_VM_SYSTEM_APERTURE_LOW_ADDR 0x2034
77--
781.7.9.5
79
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch
new file mode 100644
index 00000000..e4ec73cd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch
@@ -0,0 +1,44 @@
1From 78a76c99190cb06c44e3432b33fa1641f6c75fa9 Mon Sep 17 00:00:00 2001
2From: Jerome Glisse <jglisse@redhat.com>
3Date: Thu, 31 May 2012 19:00:24 -0400
4Subject: [PATCH 48/86] drm/radeon: fix HD6790, HD6570 backend programming
5
6commit 95c4b23ec4e2fa5604df229ddf134e31d7b3b378 upstream.
7
8Without this bit sets we get broken rendering and
9lockups.
10
11fglrx sets this bit.
12
13Bugs that should be fixed by this patch :
14https://bugs.freedesktop.org/show_bug.cgi?id=49792
15https://bugzilla.kernel.org/show_bug.cgi?id=43207
16https://bugs.freedesktop.org/show_bug.cgi?id=39282
17
18Signed-off-by: Jerome Glisse <jglisse@redhat.com>
19Acked-by: Alex Deucher <alexander.deucher@amd.com>
20Signed-off-by: Dave Airlie <airlied@redhat.com>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/gpu/drm/radeon/evergreen.c | 4 ++--
24 1 file changed, 2 insertions(+), 2 deletions(-)
25
26diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
27index 7777c2f..dac178b 100644
28--- a/drivers/gpu/drm/radeon/evergreen.c
29+++ b/drivers/gpu/drm/radeon/evergreen.c
30@@ -2116,9 +2116,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
31 WREG32(CC_SYS_RB_BACKEND_DISABLE, rb);
32 WREG32(GC_USER_RB_BACKEND_DISABLE, rb);
33 WREG32(CC_GC_SHADER_PIPE_CONFIG, sp);
34- }
35+ }
36
37- grbm_gfx_index |= SE_BROADCAST_WRITES;
38+ grbm_gfx_index = INSTANCE_BROADCAST_WRITES | SE_BROADCAST_WRITES;
39 WREG32(GRBM_GFX_INDEX, grbm_gfx_index);
40 WREG32(RLC_GFX_INDEX, grbm_gfx_index);
41
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch
new file mode 100644
index 00000000..6529366c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch
@@ -0,0 +1,33 @@
1From 309af9e8861e14263a958a70779944d8208f4323 Mon Sep 17 00:00:00 2001
2From: Thomas Hellstrom <thellstrom@vmware.com>
3Date: Fri, 1 Jun 2012 15:39:11 +0200
4Subject: [PATCH 49/86] drm/ttm: Fix spinlock imbalance
5
6commit a8ff3ee211fccf708e1911bbc096625453ebf759 upstream.
7
8This imbalance may cause hangs when TTM is trying to swap out a buffer
9that is already on the delayed delete list.
10
11Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
12Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
13Signed-off-by: Dave Airlie <airlied@redhat.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/gpu/drm/ttm/ttm_bo.c | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
20index 0bb0f5f..0d27bff 100644
21--- a/drivers/gpu/drm/ttm/ttm_bo.c
22+++ b/drivers/gpu/drm/ttm/ttm_bo.c
23@@ -1816,6 +1816,7 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
24 spin_unlock(&glob->lru_lock);
25 (void) ttm_bo_cleanup_refs(bo, false, false, false);
26 kref_put(&bo->list_kref, ttm_bo_release_list);
27+ spin_lock(&glob->lru_lock);
28 continue;
29 }
30
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch
new file mode 100644
index 00000000..81726bbb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch
@@ -0,0 +1,31 @@
1From 345d5c3e9925e3a22b7974adfdb8bbb257432aee Mon Sep 17 00:00:00 2001
2From: Thomas Hellstrom <thellstrom@vmware.com>
3Date: Fri, 1 Jun 2012 15:48:04 +0200
4Subject: [PATCH 50/86] drm/vmwgfx: Fix nasty write past alloced memory area
5
6commit 0824db38e515644f8d1bfd64adbd7cb2c6ea7c62 upstream.
7
8Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
9Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
10Signed-off-by: Dave Airlie <airlied@redhat.com>
11Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
12---
13 drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
17index f4e7763..c41226a 100644
18--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
19+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
20@@ -66,7 +66,7 @@ static int vmw_gmr2_bind(struct vmw_private *dev_priv,
21 cmd += sizeof(remap_cmd) / sizeof(uint32);
22
23 for (i = 0; i < num_pages; ++i) {
24- if (VMW_PPN_SIZE > 4)
25+ if (VMW_PPN_SIZE <= 4)
26 *cmd = page_to_pfn(*pages++);
27 else
28 *((uint64_t *)cmd) = page_to_pfn(*pages++);
29--
301.7.9.5
31
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch
new file mode 100644
index 00000000..f2451df3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch
@@ -0,0 +1,37 @@
1From a0ca2787e60cec97689e654987149ead8fa6253b Mon Sep 17 00:00:00 2001
2From: Frank Svendsboe <frank.svendsboe@gmail.com>
3Date: Thu, 17 May 2012 22:43:09 +0200
4Subject: [PATCH 51/86] mtd: of_parts: fix breakage in Kconfig
5
6commit 2e929d001e85126d9267de373d4b76014789661d upstream.
7
8MTD_OF_PARTS and the default setting is not working due to using 'Y'
9instead of 'y', introduced in commit
10d6137badeff1ef64b4e0092ec249ebdeaeb3ff37. This made our board, and
11possibly other boards using DTS defined partitions and not having
12CONFIG_MTD_OF_PARTS=y defined in the defconfig, fail to mount root.
13
14Signed-off-by: Frank Svendsboe <frank.svendsboe@gmail.com>
15Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
16Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/mtd/Kconfig | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
23index 318a869..4035b6d 100644
24--- a/drivers/mtd/Kconfig
25+++ b/drivers/mtd/Kconfig
26@@ -128,7 +128,7 @@ config MTD_AFS_PARTS
27
28 config MTD_OF_PARTS
29 tristate "OpenFirmware partitioning information support"
30- default Y
31+ default y
32 depends on OF
33 help
34 This provides a partition parsing function which derives
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch
new file mode 100644
index 00000000..c808bfed
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch
@@ -0,0 +1,34 @@
1From cc0b272fadb6be36a03152cbd37a95725a5114d4 Mon Sep 17 00:00:00 2001
2From: Stephan Gatzka <stephan@gatzka.org>
3Date: Sat, 2 Jun 2012 03:04:06 +0000
4Subject: [PATCH 52/86] fec_mpc52xx: fix timestamp filtering
5
6commit 9ca3cc6f3026946ba655e863ca2096339e667639 upstream.
7
8skb_defer_rx_timestamp was called with a freshly allocated skb but must
9be called with rskb instead.
10
11Signed-off-by: Stephan Gatzka <stephan@gatzka.org>
12Acked-by: Richard Cochran <richardcochran@gmail.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c
20index 30745b5..1e52736 100644
21--- a/drivers/net/ethernet/freescale/fec_mpc52xx.c
22+++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c
23@@ -437,7 +437,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
24 length = status & BCOM_FEC_RX_BD_LEN_MASK;
25 skb_put(rskb, length - 4); /* length without CRC32 */
26 rskb->protocol = eth_type_trans(rskb, dev);
27- if (!skb_defer_rx_timestamp(skb))
28+ if (!skb_defer_rx_timestamp(rskb))
29 netif_rx(rskb);
30
31 spin_lock(&priv->lock);
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch
new file mode 100644
index 00000000..e8bb82ba
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch
@@ -0,0 +1,44 @@
1From b57ea95f303c57eecda3fabdf246147ca9236cc3 Mon Sep 17 00:00:00 2001
2From: Manoj Iyer <manoj.iyer@canonical.com>
3Date: Thu, 2 Feb 2012 09:32:36 -0600
4Subject: [PATCH 53/86] Bluetooth: btusb: Add vendor specific ID (0a5c 21f3)
5 for BCM20702A0
6
7commit 37305cf649689a4d2341dd6fd89b091c6007f9ba upstream.
8
9T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
10D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
11P: Vendor=0a5c ProdID=21f3 Rev=01.12
12S: Manufacturer=Broadcom Corp
13S: Product=BCM20702A0
14S: SerialNumber=74DE2B344A7B
15C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
16I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
17I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
18I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
19I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
20
21Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
22Tested-by: Dennis Chua <dennis.chua@canonical.com>
23Acked-by: Marcel Holtmann <marcel@holtmann.org>
24Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 drivers/bluetooth/btusb.c | 1 +
28 1 file changed, 1 insertion(+)
29
30diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
31index e56da6a..1f8c8ca 100644
32--- a/drivers/bluetooth/btusb.c
33+++ b/drivers/bluetooth/btusb.c
34@@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = {
35
36 /* Broadcom BCM20702A0 */
37 { USB_DEVICE(0x0a5c, 0x21e3) },
38+ { USB_DEVICE(0x0a5c, 0x21f3) },
39 { USB_DEVICE(0x413c, 0x8197) },
40
41 { } /* Terminating entry */
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch
new file mode 100644
index 00000000..4adefece
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch
@@ -0,0 +1,48 @@
1From c2b51905d0a995131d0e4ad248ebe4bc4a5c9470 Mon Sep 17 00:00:00 2001
2From: "James M. Leddy" <james.leddy@canonical.com>
3Date: Tue, 6 Mar 2012 02:41:33 +0200
4Subject: [PATCH 54/86] Bluetooth: btusb: add support for BCM20702A0
5 [0a5c:21e6]
6
7commit 0a4eaeeb993658a4d6cff054a863241f32d3d2fb upstream.
8
9Add another vendor specific ID for BCM20702A0. This has been tested and
10works on hardware with this device.
11
12output of usb-devices:
13T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=04 Dev#= 6 Spd=12 MxCh= 0
14D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
15P: Vendor=0a5c ProdID=21e6 Rev=01.12
16S: Manufacturer=Broadcom Corp
17S: Product=BCM20702A0
18S: SerialNumber=D0DF9AFB227B
19C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
20I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
21I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
22I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
23I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
24
25Signed-off-by: James M. Leddy <james.leddy@canonical.com>
26Acked-by: Marcel Holtmann <marcel@holtmann.org>
27Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
28Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
29Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
30---
31 drivers/bluetooth/btusb.c | 1 +
32 1 file changed, 1 insertion(+)
33
34diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
35index 1f8c8ca..fde7512 100644
36--- a/drivers/bluetooth/btusb.c
37+++ b/drivers/bluetooth/btusb.c
38@@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = {
39
40 /* Broadcom BCM20702A0 */
41 { USB_DEVICE(0x0a5c, 0x21e3) },
42+ { USB_DEVICE(0x0a5c, 0x21e6) },
43 { USB_DEVICE(0x0a5c, 0x21f3) },
44 { USB_DEVICE(0x413c, 0x8197) },
45
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch
new file mode 100644
index 00000000..65aed69b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch
@@ -0,0 +1,47 @@
1From 67248cba79392f35493056ea7262d27fc1fe06f3 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Rechi=20Vita?= <jprvita@openbossa.org>
3Date: Wed, 14 Mar 2012 21:45:16 +0200
4Subject: [PATCH 55/86] Bluetooth: btusb: Add USB device ID "0a5c 21e8"
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 6dfc326f0605fd87e4c10ccde10de0ce4280d72d upstream.
10
11One more vendor-specific ID for BCM20702A0.
12
13T: Bus=01 Lev=03 Prnt=05 Port=02 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
14D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
15P: Vendor=0a5c ProdID=21e8 Rev=01.12
16S: Manufacturer=Broadcom Corp
17S: Product=BCM20702A0
18S: SerialNumber=00027221F4E2
19C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
20I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
21I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
22I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
23I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
24
25Signed-off-by: João Paulo Rechi Vita <jprvita@openbossa.org>
26Acked-by: Gustavo F. Padovan <padovan@profusion.mobi>
27Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
28Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
29---
30 drivers/bluetooth/btusb.c | 1 +
31 1 file changed, 1 insertion(+)
32
33diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
34index fde7512..d4859bf 100644
35--- a/drivers/bluetooth/btusb.c
36+++ b/drivers/bluetooth/btusb.c
37@@ -103,6 +103,7 @@ static struct usb_device_id btusb_table[] = {
38 /* Broadcom BCM20702A0 */
39 { USB_DEVICE(0x0a5c, 0x21e3) },
40 { USB_DEVICE(0x0a5c, 0x21e6) },
41+ { USB_DEVICE(0x0a5c, 0x21e8) },
42 { USB_DEVICE(0x0a5c, 0x21f3) },
43 { USB_DEVICE(0x413c, 0x8197) },
44
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch
new file mode 100644
index 00000000..35c5c392
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch
@@ -0,0 +1,66 @@
1From e109dadcc7d05181ac8e093311d8a242b0d58ca7 Mon Sep 17 00:00:00 2001
2From: Don Zickus <dzickus@redhat.com>
3Date: Wed, 28 Mar 2012 16:41:11 -0400
4Subject: [PATCH 56/86] Bluetooth: btusb: typo in Broadcom SoftSailing id
5
6commit 2e8b506310f6433d5558387fd568d4bfb1d6a799 upstream.
7
8I was trying to backport the following commit to RHEL-6
9
10 From 0cea73465cd22373c5cd43a3edd25fbd4bb532ef Mon Sep 17 00:00:00 2001
11 From: Oliver Neukum <oliver@neukum.org>
12 Date: Wed, 21 Sep 2011 11:37:15 +0200
13 Subject: [PATCH] btusb: add device entry for Broadcom SoftSailing
14
15and noticed it wasn't working on an HP Elitebook. Looking into the patch I
16noticed a very subtle typo in the ids. The patch has '0x05ac' instead of
17'0x0a5c'. A snippet of the lsusb -v output also shows this:
18
19Bus 002 Device 003: ID 0a5c:21e1 Broadcom Corp.
20Device Descriptor:
21 bLength 18
22 bDescriptorType 1
23 bcdUSB 2.00
24 bDeviceClass 255 Vendor Specific Class
25 bDeviceSubClass 1
26 bDeviceProtocol 1
27 bMaxPacketSize0 64
28 idVendor 0x0a5c Broadcom Corp.
29 idProduct 0x21e1
30 bcdDevice 1.12
31 iManufacturer 1 Broadcom Corp
32 iProduct 2 BCM20702A0
33 iSerial 3 60D819F0338C
34 bNumConfigurations 1
35
36Looking at other Broadcom ids, the fix matches them whereas the original patch
37matches Apple's ids.
38
39Tested on an HP Elitebook 8760w. The btusb binds and the userspace stuff loads
40correctly.
41
42Cc: Oliver Neukum <oliver@neukum.org>
43Signed-off-by: Don Zickus <dzickus@redhat.com>
44Acked-by: Marcel Holtmann <marcel@holtmann.org>
45Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
46Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
47---
48 drivers/bluetooth/btusb.c | 2 +-
49 1 file changed, 1 insertion(+), 1 deletion(-)
50
51diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
52index d4859bf..f8a0b7f 100644
53--- a/drivers/bluetooth/btusb.c
54+++ b/drivers/bluetooth/btusb.c
55@@ -61,7 +61,7 @@ static struct usb_device_id btusb_table[] = {
56 { USB_DEVICE_INFO(0xe0, 0x01, 0x01) },
57
58 /* Broadcom SoftSailing reporting vendor specific */
59- { USB_DEVICE(0x05ac, 0x21e1) },
60+ { USB_DEVICE(0x0a5c, 0x21e1) },
61
62 /* Apple MacBookPro 7,1 */
63 { USB_DEVICE(0x05ac, 0x8213) },
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch
new file mode 100644
index 00000000..4e9b6d6f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch
@@ -0,0 +1,43 @@
1From d7988c4b2a641a23d6156b650616eada6ba6152a Mon Sep 17 00:00:00 2001
2From: Manoj Iyer <manoj.iyer@canonical.com>
3Date: Mon, 9 Apr 2012 09:22:28 -0500
4Subject: [PATCH 57/86] Bluetooth: btusb: Add vendor specific ID (0489 e042)
5 for BCM20702A0
6
7commit 79cd76022044f8177bb00e3fd590ec8d6b5f8c35 upstream.
8
9T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
10D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
11P: Vendor=0489 ProdID=e042 Rev=01.12
12S: Manufacturer=Broadcom Corp
13S: Product=BCM20702A0
14S: SerialNumber=E4D53DCA61B5
15C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
16I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
17I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
18I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
19I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
20
21Reported-by: Dennis Chua <dennis.chua@canonical.com>
22Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
23Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/bluetooth/btusb.c | 1 +
27 1 file changed, 1 insertion(+)
28
29diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
30index f8a0b7f..41fe990 100644
31--- a/drivers/bluetooth/btusb.c
32+++ b/drivers/bluetooth/btusb.c
33@@ -101,6 +101,7 @@ static struct usb_device_id btusb_table[] = {
34 { USB_DEVICE(0x0c10, 0x0000) },
35
36 /* Broadcom BCM20702A0 */
37+ { USB_DEVICE(0x0489, 0xe042) },
38 { USB_DEVICE(0x0a5c, 0x21e3) },
39 { USB_DEVICE(0x0a5c, 0x21e6) },
40 { USB_DEVICE(0x0a5c, 0x21e8) },
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch
new file mode 100644
index 00000000..f383af87
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch
@@ -0,0 +1,64 @@
1From e98b15f43ca380ca2d8adeae78da99222cf12f8a Mon Sep 17 00:00:00 2001
2From: AceLan Kao <acelan.kao@canonical.com>
3Date: Fri, 13 Apr 2012 17:39:57 +0800
4Subject: [PATCH 58/86] Bluetooth: Add support for Atheros [13d3:3362]
5
6commit 87522a433ba6886b5ccbb497e0a7cb8097def64e upstream.
7
8Add another vendor specific ID for Atheros AR3012 device.
9This chip is wrapped by IMC Networks.
10
11output of usb-devices:
12T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0
13D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
14P: Vendor=13d3 ProdID=3362 Rev=00.02
15S: Manufacturer=Atheros Communications
16S: Product=Bluetooth USB Host Controller
17S: SerialNumber=Alaska Day 2006
18C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
19I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
20I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
21
22Signed-off-by: AceLan Kao <acelan.kao@canonical.com>
23Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 drivers/bluetooth/ath3k.c | 2 ++
27 drivers/bluetooth/btusb.c | 1 +
28 2 files changed, 3 insertions(+)
29
30diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
31index 99fefbd..90482ef 100644
32--- a/drivers/bluetooth/ath3k.c
33+++ b/drivers/bluetooth/ath3k.c
34@@ -74,6 +74,7 @@ static struct usb_device_id ath3k_table[] = {
35 { USB_DEVICE(0x0CF3, 0x311D) },
36 { USB_DEVICE(0x13d3, 0x3375) },
37 { USB_DEVICE(0x04CA, 0x3005) },
38+ { USB_DEVICE(0x13d3, 0x3362) },
39
40 /* Atheros AR5BBU12 with sflash firmware */
41 { USB_DEVICE(0x0489, 0xE02C) },
42@@ -93,6 +94,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
43 { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
44 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
45 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
46+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
47
48 { } /* Terminating entry */
49 };
50diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
51index 41fe990..1329fa7 100644
52--- a/drivers/bluetooth/btusb.c
53+++ b/drivers/bluetooth/btusb.c
54@@ -134,6 +134,7 @@ static struct usb_device_id blacklist_table[] = {
55 { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
56 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
57 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
58+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
59
60 /* Atheros AR5BBU12 with sflash firmware */
61 { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
62--
631.7.9.5
64
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch
new file mode 100644
index 00000000..b52635a4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch
@@ -0,0 +1,65 @@
1From d86daa62c84ee4f586aed288307d8086ffd03db9 Mon Sep 17 00:00:00 2001
2From: AceLan Kao <acelan.kao@canonical.com>
3Date: Thu, 19 Apr 2012 14:53:45 +0800
4Subject: [PATCH 59/86] Bluetooth: Add support for AR3012 [0cf3:e004]
5
6commit ac71311e65e2c4c2dbac76db698fecbee755b016 upstream.
7
8Add another vendor specific ID for Atheros AR3012
9
10output of usb-devices:
11T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
12D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
13P: Vendor=0cf3 ProdID=e004 Rev=00.02
14S: Manufacturer=Atheros Communications
15S: Product=Bluetooth USB Host Controller
16S: SerialNumber=Alaska Day 2006
17C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
18I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
19I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
20
21BugLink: https://bugs.launchpad.net/bugs/922715
22
23Signed-off-by: AceLan Kao <acelan.kao@canonical.com>
24Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 drivers/bluetooth/ath3k.c | 2 ++
28 drivers/bluetooth/btusb.c | 1 +
29 2 files changed, 3 insertions(+)
30
31diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
32index 90482ef..7e0b3c4 100644
33--- a/drivers/bluetooth/ath3k.c
34+++ b/drivers/bluetooth/ath3k.c
35@@ -75,6 +75,7 @@ static struct usb_device_id ath3k_table[] = {
36 { USB_DEVICE(0x13d3, 0x3375) },
37 { USB_DEVICE(0x04CA, 0x3005) },
38 { USB_DEVICE(0x13d3, 0x3362) },
39+ { USB_DEVICE(0x0CF3, 0xE004) },
40
41 /* Atheros AR5BBU12 with sflash firmware */
42 { USB_DEVICE(0x0489, 0xE02C) },
43@@ -95,6 +96,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
44 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
45 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
46 { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
47+ { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
48
49 { } /* Terminating entry */
50 };
51diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
52index 1329fa7..d6217c2 100644
53--- a/drivers/bluetooth/btusb.c
54+++ b/drivers/bluetooth/btusb.c
55@@ -135,6 +135,7 @@ static struct usb_device_id blacklist_table[] = {
56 { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
57 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
58 { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
59+ { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
60
61 /* Atheros AR5BBU12 with sflash firmware */
62 { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
63--
641.7.9.5
65
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch
new file mode 100644
index 00000000..ca759ca8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch
@@ -0,0 +1,71 @@
1From ebe49536c92d57d8147efb128bbd6e3aff2e9289 Mon Sep 17 00:00:00 2001
2From: Steven Harms <sjharms@gmail.com>
3Date: Fri, 13 Apr 2012 14:45:55 -0400
4Subject: [PATCH 60/86] Add Foxconn / Hon Hai IDs for btusb module
5
6commit 985140369be1e886754d8ac0375dd64e4f727311 upstream.
7
8This change adds 0x0489:0xe033 to the btusb module.
9
10This bluetooth usb device is integrated in the Acer TimelineX AS4830TG-6808 notebook.
11
12Output from /sys/kernel/debug/usb/devices:
13
14T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 4 Spd=12 MxCh= 0
15D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
16P: Vendor=0489 ProdID=e033 Rev= 2.29
17S: Manufacturer=Broadcom Corp
18S: Product=Acer Module
19S: SerialNumber=60D819F74101
20C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA
21I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) 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=ff(vend.) 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=ff(vend.) 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= 32 Ivl=1ms
36E: Ad=03(O) Atr=01(Isoc) MxPS= 32 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= 64 Ivl=1ms
39E: Ad=03(O) Atr=01(Isoc) MxPS= 64 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= 64 Ivl=1ms
42E: Ad=03(O) Atr=01(Isoc) MxPS= 64 Ivl=1ms
43I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
44E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms
45E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms
46I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
47
48Signed-off-by: Steven Harms <sjharms@gmail.com>
49Signed-off-by: Gustavo Padovan <gustavo@padovan.org>
50Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
51---
52 drivers/bluetooth/btusb.c | 3 +++
53 1 file changed, 3 insertions(+)
54
55diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
56index d6217c2..fdceeac 100644
57--- a/drivers/bluetooth/btusb.c
58+++ b/drivers/bluetooth/btusb.c
59@@ -108,6 +108,9 @@ static struct usb_device_id btusb_table[] = {
60 { USB_DEVICE(0x0a5c, 0x21f3) },
61 { USB_DEVICE(0x413c, 0x8197) },
62
63+ /* Foxconn - Hon Hai */
64+ { USB_DEVICE(0x0489, 0xe033) },
65+
66 { } /* Terminating entry */
67 };
68
69--
701.7.9.5
71
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch
new file mode 100644
index 00000000..f0c30e1a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch
@@ -0,0 +1,94 @@
1From c28bcb8c3f6bdeb976832e0726872944c739ae6a Mon Sep 17 00:00:00 2001
2From: Michael Gruetzner <mgruetzn@gmx.de>
3Date: Wed, 2 May 2012 22:33:40 +0200
4Subject: [PATCH 61/86] Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22
5 0489:E03C
6
7commit 85d59726c5c66016a507f1f4a60db8e374dd284d upstream.
8
9Add Foxconn/Hon Hai AR5BBU22 Bluetooth Module( 0x489:0xE03C) to
10the blacklist of btusb module and add it to the ath3k module to properly
11load the firmware in Kernel 3.3.4
12The device is integrated in e.g. some Acer Aspire 7750G.
13
14Output from /sys/kernel/debug/usb/devices:
15
16T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 6 Spd=12 MxCh= 0
17D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
18P: Vendor=0489 ProdID=e03c Rev= 0.02
19S: Manufacturer=Atheros Communications
20S: Product=Bluetooth USB Host Controller
21S: SerialNumber=Alaska Day 2006
22C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
23I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
24E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
25E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
26E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
27I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
28E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
29E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
30I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
31E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
32E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
33I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
34E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
35E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
36I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
37E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
38E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
39I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
40E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
41E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
42I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
43E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
44E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
45
46Signed-off-by: Michael Gruetzner <mgruetzn@gmx.de>
47Signed-off-by: Gustavo Padovan <gustavo@padovan.org>
48Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
49---
50 drivers/bluetooth/ath3k.c | 6 ++++++
51 drivers/bluetooth/btusb.c | 3 +++
52 2 files changed, 9 insertions(+)
53
54diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
55index 7e0b3c4..f1bd44f 100644
56--- a/drivers/bluetooth/ath3k.c
57+++ b/drivers/bluetooth/ath3k.c
58@@ -80,6 +80,9 @@ static struct usb_device_id ath3k_table[] = {
59 /* Atheros AR5BBU12 with sflash firmware */
60 { USB_DEVICE(0x0489, 0xE02C) },
61
62+ /* Atheros AR5BBU22 with sflash firmware */
63+ { USB_DEVICE(0x0489, 0xE03C) },
64+
65 { } /* Terminating entry */
66 };
67
68@@ -98,6 +101,9 @@ static struct usb_device_id ath3k_blist_tbl[] = {
69 { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
70 { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
71
72+ /* Atheros AR5BBU22 with sflash firmware */
73+ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 },
74+
75 { } /* Terminating entry */
76 };
77
78diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
79index fdceeac..fc4bcd6 100644
80--- a/drivers/bluetooth/btusb.c
81+++ b/drivers/bluetooth/btusb.c
82@@ -143,6 +143,9 @@ static struct usb_device_id blacklist_table[] = {
83 /* Atheros AR5BBU12 with sflash firmware */
84 { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
85
86+ /* Atheros AR5BBU12 with sflash firmware */
87+ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 },
88+
89 /* Broadcom BCM2035 */
90 { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
91 { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
92--
931.7.9.5
94
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch
new file mode 100644
index 00000000..de381738
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch
@@ -0,0 +1,34 @@
1From d23ccb0cbe37783fcfb8879480160ed840488bb2 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Tue, 8 Nov 2011 23:17:34 +0000
4Subject: [PATCH 62/86] drm/i915:: Disable FBC on SandyBridge
5
6commit d56d8b28e9247e7e35e02fbb12b12239a2c33ad1 upstream.
7
8Enabling FBC is causing the BLT ring to run between 10-100x slower than
9normal and frequently lockup. The interim solution is disable FBC once
10more until we know why.
11
12Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
13Signed-off-by: Keith Packard <keithp@keithp.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/gpu/drm/i915/intel_display.c | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
20index 41bbe78..4720397 100644
21--- a/drivers/gpu/drm/i915/intel_display.c
22+++ b/drivers/gpu/drm/i915/intel_display.c
23@@ -1864,7 +1864,7 @@ static void intel_update_fbc(struct drm_device *dev)
24 if (enable_fbc < 0) {
25 DRM_DEBUG_KMS("fbc set to per-chip default\n");
26 enable_fbc = 1;
27- if (INTEL_INFO(dev)->gen <= 5)
28+ if (INTEL_INFO(dev)->gen <= 6)
29 enable_fbc = 0;
30 }
31 if (!enable_fbc) {
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch
new file mode 100644
index 00000000..71f8710c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch
@@ -0,0 +1,36 @@
1From 1fc7ceff08329209e4c28263a5b545343d4cce19 Mon Sep 17 00:00:00 2001
2From: "David S. Miller" <davem@davemloft.net>
3Date: Thu, 10 May 2012 22:16:32 -0400
4Subject: [PATCH 63/86] ipv4: Do not use dead fib_info entries.
5
6[ Upstream commit dccd9ecc374462e5d6a5b8f8110415a86c2213d8 ]
7
8Due to RCU lookups and RCU based release, fib_info objects can
9be found during lookup which have fi->fib_dead set.
10
11We must ignore these entries, otherwise we risk dereferencing
12the parts of the entry which are being torn down.
13
14Reported-by: Yevgen Pronenko <yevgen.pronenko@sonymobile.com>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 net/ipv4/fib_trie.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
22index 3ce23f9..cd2d639 100644
23--- a/net/ipv4/fib_trie.c
24+++ b/net/ipv4/fib_trie.c
25@@ -1372,6 +1372,8 @@ static int check_leaf(struct fib_table *tb, struct trie *t, struct leaf *l,
26
27 if (fa->fa_tos && fa->fa_tos != flp->flowi4_tos)
28 continue;
29+ if (fi->fib_dead)
30+ continue;
31 if (fa->fa_info->fib_scope < flp->flowi4_scope)
32 continue;
33 fib_alias_accessed(fa);
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch
new file mode 100644
index 00000000..80f8f2c2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch
@@ -0,0 +1,92 @@
1From 5d360e327490263d01b60ed06f9c48ec923e93c4 Mon Sep 17 00:00:00 2001
2From: Yanmin Zhang <yanmin_zhang@linux.intel.com>
3Date: Wed, 23 May 2012 15:39:45 +0000
4Subject: [PATCH 64/86] ipv4: fix the rcu race between free_fib_info and
5 ip_route_output_slow
6
7[ Upstream commit e49cc0da7283088c5e03d475ffe2fdcb24a6d5b1 ]
8
9We hit a kernel OOPS.
10
11<3>[23898.789643] BUG: sleeping function called from invalid context at
12/data/buildbot/workdir/ics/hardware/intel/linux-2.6/arch/x86/mm/fault.c:1103
13<3>[23898.862215] in_atomic(): 0, irqs_disabled(): 0, pid: 10526, name:
14Thread-6683
15<4>[23898.967805] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me
16to suspend...
17<4>[23899.258526] Pid: 10526, comm: Thread-6683 Tainted: G W
183.0.8-137685-ge7742f9 #1
19<4>[23899.357404] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me
20to suspend...
21<4>[23899.904225] Call Trace:
22<4>[23899.989209] [<c1227f50>] ? pgtable_bad+0x130/0x130
23<4>[23900.000416] [<c1238c2a>] __might_sleep+0x10a/0x110
24<4>[23900.007357] [<c1228021>] do_page_fault+0xd1/0x3c0
25<4>[23900.013764] [<c18e9ba9>] ? restore_all+0xf/0xf
26<4>[23900.024024] [<c17c007b>] ? napi_complete+0x8b/0x690
27<4>[23900.029297] [<c1227f50>] ? pgtable_bad+0x130/0x130
28<4>[23900.123739] [<c1227f50>] ? pgtable_bad+0x130/0x130
29<4>[23900.128955] [<c18ea0c3>] error_code+0x5f/0x64
30<4>[23900.133466] [<c1227f50>] ? pgtable_bad+0x130/0x130
31<4>[23900.138450] [<c17f6298>] ? __ip_route_output_key+0x698/0x7c0
32<4>[23900.144312] [<c17f5f8d>] ? __ip_route_output_key+0x38d/0x7c0
33<4>[23900.150730] [<c17f63df>] ip_route_output_flow+0x1f/0x60
34<4>[23900.156261] [<c181de58>] ip4_datagram_connect+0x188/0x2b0
35<4>[23900.161960] [<c18e981f>] ? _raw_spin_unlock_bh+0x1f/0x30
36<4>[23900.167834] [<c18298d6>] inet_dgram_connect+0x36/0x80
37<4>[23900.173224] [<c14f9e88>] ? _copy_from_user+0x48/0x140
38<4>[23900.178817] [<c17ab9da>] sys_connect+0x9a/0xd0
39<4>[23900.183538] [<c132e93c>] ? alloc_file+0xdc/0x240
40<4>[23900.189111] [<c123925d>] ? sub_preempt_count+0x3d/0x50
41
42Function free_fib_info resets nexthop_nh->nh_dev to NULL before releasing
43fi. Other cpu might be accessing fi. Fixing it by delaying the releasing.
44
45With the patch, we ran MTBF testing on Android mobile for 12 hours
46and didn't trigger the issue.
47
48Thank Eric for very detailed review/checking the issue.
49
50Signed-off-by: Yanmin Zhang <yanmin_zhang@linux.intel.com>
51Signed-off-by: Kun Jiang <kunx.jiang@intel.com>
52Acked-by: Eric Dumazet <edumazet@google.com>
53Signed-off-by: David S. Miller <davem@davemloft.net>
54Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
55---
56 net/ipv4/fib_semantics.c | 12 ++++++------
57 1 file changed, 6 insertions(+), 6 deletions(-)
58
59diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
60index 80106d8..d01f9c6 100644
61--- a/net/ipv4/fib_semantics.c
62+++ b/net/ipv4/fib_semantics.c
63@@ -146,6 +146,12 @@ static void free_fib_info_rcu(struct rcu_head *head)
64 {
65 struct fib_info *fi = container_of(head, struct fib_info, rcu);
66
67+ change_nexthops(fi) {
68+ if (nexthop_nh->nh_dev)
69+ dev_put(nexthop_nh->nh_dev);
70+ } endfor_nexthops(fi);
71+
72+ release_net(fi->fib_net);
73 if (fi->fib_metrics != (u32 *) dst_default_metrics)
74 kfree(fi->fib_metrics);
75 kfree(fi);
76@@ -157,13 +163,7 @@ void free_fib_info(struct fib_info *fi)
77 pr_warning("Freeing alive fib_info %p\n", fi);
78 return;
79 }
80- change_nexthops(fi) {
81- if (nexthop_nh->nh_dev)
82- dev_put(nexthop_nh->nh_dev);
83- nexthop_nh->nh_dev = NULL;
84- } endfor_nexthops(fi);
85 fib_info_cnt--;
86- release_net(fi->fib_net);
87 call_rcu(&fi->rcu, free_fib_info_rcu);
88 }
89
90--
911.7.9.5
92
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch
new file mode 100644
index 00000000..2d134535
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch
@@ -0,0 +1,110 @@
1From aebe9f30c2e54be6030a3a5a25c005053d1e26ef Mon Sep 17 00:00:00 2001
2From: "Peter Huang (Peng)" <peter.huangpeng@huawei.com>
3Date: Thu, 19 Apr 2012 20:12:51 +0000
4Subject: [PATCH 65/86] set fake_rtable's dst to NULL to avoid kernel Oops
5
6[ Upstream commit a881e963c7fe1f226e991ee9bbe8907acda93294 ]
7
8bridge: set fake_rtable's dst to NULL to avoid kernel Oops
9
10when bridge is deleted before tap/vif device's delete, kernel may
11encounter an oops because of NULL reference to fake_rtable's dst.
12Set fake_rtable's dst to NULL before sending packets out can solve
13this problem.
14
15v4 reformat, change br_drop_fake_rtable(skb) to {}
16
17v3 enrich commit header
18
19v2 introducing new flag DST_FAKE_RTABLE to dst_entry struct.
20
21[ Use "do { } while (0)" for nop br_drop_fake_rtable()
22 implementation -DaveM ]
23
24Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
25Signed-off-by: Peter Huang <peter.huangpeng@huawei.com>
26Signed-off-by: David S. Miller <davem@davemloft.net>
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28---
29 include/linux/netfilter_bridge.h | 9 +++++++++
30 include/net/dst.h | 1 +
31 net/bridge/br_forward.c | 1 +
32 net/bridge/br_netfilter.c | 8 ++------
33 4 files changed, 13 insertions(+), 6 deletions(-)
34
35diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h
36index 0ddd161..31d2844 100644
37--- a/include/linux/netfilter_bridge.h
38+++ b/include/linux/netfilter_bridge.h
39@@ -104,9 +104,18 @@ struct bridge_skb_cb {
40 } daddr;
41 };
42
43+static inline void br_drop_fake_rtable(struct sk_buff *skb)
44+{
45+ struct dst_entry *dst = skb_dst(skb);
46+
47+ if (dst && (dst->flags & DST_FAKE_RTABLE))
48+ skb_dst_drop(skb);
49+}
50+
51 #else
52 #define nf_bridge_maybe_copy_header(skb) (0)
53 #define nf_bridge_pad(skb) (0)
54+#define br_drop_fake_rtable(skb) do { } while (0)
55 #endif /* CONFIG_BRIDGE_NETFILTER */
56
57 #endif /* __KERNEL__ */
58diff --git a/include/net/dst.h b/include/net/dst.h
59index 75766b4..65bca65 100644
60--- a/include/net/dst.h
61+++ b/include/net/dst.h
62@@ -54,6 +54,7 @@ struct dst_entry {
63 #define DST_NOCACHE 0x0010
64 #define DST_NOCOUNT 0x0020
65 #define DST_NOPEER 0x0040
66+#define DST_FAKE_RTABLE 0x0080
67
68 short error;
69 short obsolete;
70diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
71index ee64287..e221f88 100644
72--- a/net/bridge/br_forward.c
73+++ b/net/bridge/br_forward.c
74@@ -47,6 +47,7 @@ int br_dev_queue_push_xmit(struct sk_buff *skb)
75 kfree_skb(skb);
76 } else {
77 skb_push(skb, ETH_HLEN);
78+ br_drop_fake_rtable(skb);
79 dev_queue_xmit(skb);
80 }
81
82diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
83index fa8b8f7..577ea5d 100644
84--- a/net/bridge/br_netfilter.c
85+++ b/net/bridge/br_netfilter.c
86@@ -147,7 +147,7 @@ void br_netfilter_rtable_init(struct net_bridge *br)
87 rt->dst.dev = br->dev;
88 rt->dst.path = &rt->dst;
89 dst_init_metrics(&rt->dst, br_dst_default_metrics, true);
90- rt->dst.flags = DST_NOXFRM | DST_NOPEER;
91+ rt->dst.flags = DST_NOXFRM | DST_NOPEER | DST_FAKE_RTABLE;
92 rt->dst.ops = &fake_dst_ops;
93 }
94
95@@ -687,11 +687,7 @@ static unsigned int br_nf_local_in(unsigned int hook, struct sk_buff *skb,
96 const struct net_device *out,
97 int (*okfn)(struct sk_buff *))
98 {
99- struct rtable *rt = skb_rtable(skb);
100-
101- if (rt && rt == bridge_parent_rtable(in))
102- skb_dst_drop(skb);
103-
104+ br_drop_fake_rtable(skb);
105 return NF_ACCEPT;
106 }
107
108--
1091.7.9.5
110
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch
new file mode 100644
index 00000000..c9b4d220
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch
@@ -0,0 +1,181 @@
1From 8e6278442fffb4bfa735336a954144198fd7d778 Mon Sep 17 00:00:00 2001
2From: Gao feng <gaofeng@cn.fujitsu.com>
3Date: Sat, 26 May 2012 01:30:53 +0000
4Subject: [PATCH 66/86] ipv6: fix incorrect ipsec fragment
5
6[ Upstream commit 0c1833797a5a6ec23ea9261d979aa18078720b74 ]
7
8Since commit ad0081e43a
9"ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed"
10the fragment of packets is incorrect.
11because tunnel mode needs IPsec headers and trailer for all fragments,
12while on transport mode it is sufficient to add the headers to the
13first fragment and the trailer to the last.
14
15so modify mtu and maxfraglen base on ipsec mode and if fragment is first
16or last.
17
18with my test,it work well(every fragment's size is the mtu)
19and does not trigger slow fragment path.
20
21Changes from v1:
22 though optimization, mtu_prev and maxfraglen_prev can be delete.
23 replace xfrm mode codes with dst_entry's new frag DST_XFRM_TUNNEL.
24 add fuction ip6_append_data_mtu to make codes clearer.
25
26Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
27Signed-off-by: David S. Miller <davem@davemloft.net>
28Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
29---
30 include/net/dst.h | 1 +
31 net/ipv6/ip6_output.c | 68 +++++++++++++++++++++++++++++++++++-------------
32 net/xfrm/xfrm_policy.c | 3 +++
33 3 files changed, 54 insertions(+), 18 deletions(-)
34
35diff --git a/include/net/dst.h b/include/net/dst.h
36index 65bca65..16010d1 100644
37--- a/include/net/dst.h
38+++ b/include/net/dst.h
39@@ -55,6 +55,7 @@ struct dst_entry {
40 #define DST_NOCOUNT 0x0020
41 #define DST_NOPEER 0x0040
42 #define DST_FAKE_RTABLE 0x0080
43+#define DST_XFRM_TUNNEL 0x0100
44
45 short error;
46 short obsolete;
47diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
48index f7f07e2..ae98e09 100644
49--- a/net/ipv6/ip6_output.c
50+++ b/net/ipv6/ip6_output.c
51@@ -1178,6 +1178,29 @@ static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src,
52 return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
53 }
54
55+static void ip6_append_data_mtu(int *mtu,
56+ int *maxfraglen,
57+ unsigned int fragheaderlen,
58+ struct sk_buff *skb,
59+ struct rt6_info *rt)
60+{
61+ if (!(rt->dst.flags & DST_XFRM_TUNNEL)) {
62+ if (skb == NULL) {
63+ /* first fragment, reserve header_len */
64+ *mtu = *mtu - rt->dst.header_len;
65+
66+ } else {
67+ /*
68+ * this fragment is not first, the headers
69+ * space is regarded as data space.
70+ */
71+ *mtu = dst_mtu(rt->dst.path);
72+ }
73+ *maxfraglen = ((*mtu - fragheaderlen) & ~7)
74+ + fragheaderlen - sizeof(struct frag_hdr);
75+ }
76+}
77+
78 int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
79 int offset, int len, int odd, struct sk_buff *skb),
80 void *from, int length, int transhdrlen,
81@@ -1187,7 +1210,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
82 struct inet_sock *inet = inet_sk(sk);
83 struct ipv6_pinfo *np = inet6_sk(sk);
84 struct inet_cork *cork;
85- struct sk_buff *skb;
86+ struct sk_buff *skb, *skb_prev = NULL;
87 unsigned int maxfraglen, fragheaderlen;
88 int exthdrlen;
89 int dst_exthdrlen;
90@@ -1245,8 +1268,12 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
91 inet->cork.fl.u.ip6 = *fl6;
92 np->cork.hop_limit = hlimit;
93 np->cork.tclass = tclass;
94- mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
95- rt->dst.dev->mtu : dst_mtu(&rt->dst);
96+ if (rt->dst.flags & DST_XFRM_TUNNEL)
97+ mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
98+ rt->dst.dev->mtu : dst_mtu(&rt->dst);
99+ else
100+ mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
101+ rt->dst.dev->mtu : dst_mtu(rt->dst.path);
102 if (np->frag_size < mtu) {
103 if (np->frag_size)
104 mtu = np->frag_size;
105@@ -1342,25 +1369,27 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
106 unsigned int fraglen;
107 unsigned int fraggap;
108 unsigned int alloclen;
109- struct sk_buff *skb_prev;
110 alloc_new_skb:
111- skb_prev = skb;
112-
113 /* There's no room in the current skb */
114- if (skb_prev)
115- fraggap = skb_prev->len - maxfraglen;
116+ if (skb)
117+ fraggap = skb->len - maxfraglen;
118 else
119 fraggap = 0;
120+ /* update mtu and maxfraglen if necessary */
121+ if (skb == NULL || skb_prev == NULL)
122+ ip6_append_data_mtu(&mtu, &maxfraglen,
123+ fragheaderlen, skb, rt);
124+
125+ skb_prev = skb;
126
127 /*
128 * If remaining data exceeds the mtu,
129 * we know we need more fragment(s).
130 */
131 datalen = length + fraggap;
132- if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
133- datalen = maxfraglen - fragheaderlen;
134
135- fraglen = datalen + fragheaderlen;
136+ if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
137+ datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len;
138 if ((flags & MSG_MORE) &&
139 !(rt->dst.dev->features&NETIF_F_SG))
140 alloclen = mtu;
141@@ -1369,13 +1398,16 @@ alloc_new_skb:
142
143 alloclen += dst_exthdrlen;
144
145- /*
146- * The last fragment gets additional space at tail.
147- * Note: we overallocate on fragments with MSG_MODE
148- * because we have no idea if we're the last one.
149- */
150- if (datalen == length + fraggap)
151- alloclen += rt->dst.trailer_len;
152+ if (datalen != length + fraggap) {
153+ /*
154+ * this is not the last fragment, the trailer
155+ * space is regarded as data space.
156+ */
157+ datalen += rt->dst.trailer_len;
158+ }
159+
160+ alloclen += rt->dst.trailer_len;
161+ fraglen = datalen + fragheaderlen;
162
163 /*
164 * We just reserve space for fragment header.
165diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
166index 9049a5c..0174034 100644
167--- a/net/xfrm/xfrm_policy.c
168+++ b/net/xfrm/xfrm_policy.c
169@@ -1919,6 +1919,9 @@ no_transform:
170 }
171 ok:
172 xfrm_pols_put(pols, drop_pols);
173+ if (dst && dst->xfrm &&
174+ dst->xfrm->props.mode == XFRM_MODE_TUNNEL)
175+ dst->flags |= DST_XFRM_TUNNEL;
176 return dst;
177
178 nopol:
179--
1801.7.9.5
181
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch
new file mode 100644
index 00000000..258e4128
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch
@@ -0,0 +1,113 @@
1From d1517b97762180b241f3e888abb8c1ec72e760be Mon Sep 17 00:00:00 2001
2From: James Chapman <jchapman@katalix.com>
3Date: Tue, 29 May 2012 23:13:23 +0000
4Subject: [PATCH 67/86] l2tp: fix oops in L2TP IP sockets for connect()
5 AF_UNSPEC case
6
7[ Upstream commit c51ce49735c183ef2592db70f918ee698716276b ]
8
9An application may call connect() to disconnect a socket using an
10address with family AF_UNSPEC. The L2TP IP sockets were not handling
11this case when the socket is not bound and an attempt to connect()
12using AF_UNSPEC in such cases would result in an oops. This patch
13addresses the problem by protecting the sk_prot->disconnect() call
14against trying to unhash the socket before it is bound.
15
16The patch also adds more checks that the sockaddr supplied to bind()
17and connect() calls is valid.
18
19 RIP: 0010:[<ffffffff82e133b0>] [<ffffffff82e133b0>] inet_unhash+0x50/0xd0
20 RSP: 0018:ffff88001989be28 EFLAGS: 00010293
21 Stack:
22 ffff8800407a8000 0000000000000000 ffff88001989be78 ffffffff82e3a249
23 ffffffff82e3a050 ffff88001989bec8 ffff88001989be88 ffff8800407a8000
24 0000000000000010 ffff88001989bec8 ffff88001989bea8 ffffffff82e42639
25 Call Trace:
26 [<ffffffff82e3a249>] udp_disconnect+0x1f9/0x290
27 [<ffffffff82e42639>] inet_dgram_connect+0x29/0x80
28 [<ffffffff82d012fc>] sys_connect+0x9c/0x100
29
30Reported-by: Sasha Levin <levinsasha928@gmail.com>
31Signed-off-by: James Chapman <jchapman@katalix.com>
32Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
33---
34 net/l2tp/l2tp_ip.c | 30 ++++++++++++++++++++++++------
35 1 file changed, 24 insertions(+), 6 deletions(-)
36
37diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
38index 2a2a3e7..2fbbe1f 100644
39--- a/net/l2tp/l2tp_ip.c
40+++ b/net/l2tp/l2tp_ip.c
41@@ -251,9 +251,16 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
42 {
43 struct inet_sock *inet = inet_sk(sk);
44 struct sockaddr_l2tpip *addr = (struct sockaddr_l2tpip *) uaddr;
45- int ret = -EINVAL;
46+ int ret;
47 int chk_addr_ret;
48
49+ if (!sock_flag(sk, SOCK_ZAPPED))
50+ return -EINVAL;
51+ if (addr_len < sizeof(struct sockaddr_l2tpip))
52+ return -EINVAL;
53+ if (addr->l2tp_family != AF_INET)
54+ return -EINVAL;
55+
56 ret = -EADDRINUSE;
57 read_lock_bh(&l2tp_ip_lock);
58 if (__l2tp_ip_bind_lookup(&init_net, addr->l2tp_addr.s_addr, sk->sk_bound_dev_if, addr->l2tp_conn_id))
59@@ -283,6 +290,8 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
60 sk_del_node_init(sk);
61 write_unlock_bh(&l2tp_ip_lock);
62 ret = 0;
63+ sock_reset_flag(sk, SOCK_ZAPPED);
64+
65 out:
66 release_sock(sk);
67
68@@ -303,13 +312,14 @@ static int l2tp_ip_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len
69 __be32 saddr;
70 int oif, rc;
71
72- rc = -EINVAL;
73+ if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */
74+ return -EINVAL;
75+
76 if (addr_len < sizeof(*lsa))
77- goto out;
78+ return -EINVAL;
79
80- rc = -EAFNOSUPPORT;
81 if (lsa->l2tp_family != AF_INET)
82- goto out;
83+ return -EAFNOSUPPORT;
84
85 lock_sock(sk);
86
87@@ -363,6 +373,14 @@ out:
88 return rc;
89 }
90
91+static int l2tp_ip_disconnect(struct sock *sk, int flags)
92+{
93+ if (sock_flag(sk, SOCK_ZAPPED))
94+ return 0;
95+
96+ return udp_disconnect(sk, flags);
97+}
98+
99 static int l2tp_ip_getname(struct socket *sock, struct sockaddr *uaddr,
100 int *uaddr_len, int peer)
101 {
102@@ -598,7 +616,7 @@ static struct proto l2tp_ip_prot = {
103 .close = l2tp_ip_close,
104 .bind = l2tp_ip_bind,
105 .connect = l2tp_ip_connect,
106- .disconnect = udp_disconnect,
107+ .disconnect = l2tp_ip_disconnect,
108 .ioctl = udp_ioctl,
109 .destroy = l2tp_ip_destroy_sock,
110 .setsockopt = ip_setsockopt,
111--
1121.7.9.5
113
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch
new file mode 100644
index 00000000..3cc1e86c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch
@@ -0,0 +1,47 @@
1From c354bf6217e04a41a963b465634ff37450c68c1e Mon Sep 17 00:00:00 2001
2From: Francois Romieu <romieu@fr.zoreil.com>
3Date: Fri, 27 Jan 2012 15:05:38 +0100
4Subject: [PATCH 68/86] r8169: missing barriers.
5
6[ Upstream commit 1e874e041fc7c222cbd85b20c4406070be1f687a ]
7
8Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
9Cc: Hayes Wang <hayeswang@realtek.com>
10Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
11---
12 drivers/net/ethernet/realtek/r8169.c | 5 ++---
13 1 file changed, 2 insertions(+), 3 deletions(-)
14
15diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
16index 697cae3..5104d76 100644
17--- a/drivers/net/ethernet/realtek/r8169.c
18+++ b/drivers/net/ethernet/realtek/r8169.c
19@@ -5562,7 +5562,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
20
21 if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
22 netif_stop_queue(dev);
23- smp_rmb();
24+ smp_mb();
25 if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
26 netif_wake_queue(dev);
27 }
28@@ -5663,7 +5663,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
29
30 if (tp->dirty_tx != dirty_tx) {
31 tp->dirty_tx = dirty_tx;
32- smp_wmb();
33+ smp_mb();
34 if (netif_queue_stopped(dev) &&
35 (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
36 netif_wake_queue(dev);
37@@ -5674,7 +5674,6 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
38 * of start_xmit activity is detected (if it is not detected,
39 * it is slow enough). -- FR
40 */
41- smp_rmb();
42 if (tp->cur_tx != dirty_tx)
43 RTL_W8(TxPoll, NPQ);
44 }
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch
new file mode 100644
index 00000000..e8e1ad5c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch
@@ -0,0 +1,58 @@
1From 88d5ff14a80522c59577194a954942feefd47d67 Mon Sep 17 00:00:00 2001
2From: Francois Romieu <romieu@fr.zoreil.com>
3Date: Tue, 31 Jan 2012 00:00:19 +0100
4Subject: [PATCH 69/86] r8169: fix early queue wake-up.
5
6[ Upstream commit ae1f23fb433ac0aaff8aeaa5a7b14348e9aa8277 ]
7
8With infinite gratitude to Eric Dumazet for allowing me to identify
9the error.
10
11Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
12Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
13Cc: Hayes Wang <hayeswang@realtek.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/net/ethernet/realtek/r8169.c | 18 ++++++++++++++++++
17 1 file changed, 18 insertions(+)
18
19diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
20index 5104d76..5f3fa32 100644
21--- a/drivers/net/ethernet/realtek/r8169.c
22+++ b/drivers/net/ethernet/realtek/r8169.c
23@@ -5561,7 +5561,18 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
24 RTL_W8(TxPoll, NPQ);
25
26 if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
27+ /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must
28+ * not miss a ring update when it notices a stopped queue.
29+ */
30+ smp_wmb();
31 netif_stop_queue(dev);
32+ /* Sync with rtl_tx:
33+ * - publish queue status and cur_tx ring index (write barrier)
34+ * - refresh dirty_tx ring index (read barrier).
35+ * May the current thread have a pessimistic view of the ring
36+ * status and forget to wake up queue, a racing rtl_tx thread
37+ * can't.
38+ */
39 smp_mb();
40 if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
41 netif_wake_queue(dev);
42@@ -5663,6 +5674,13 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
43
44 if (tp->dirty_tx != dirty_tx) {
45 tp->dirty_tx = dirty_tx;
46+ /* Sync with rtl8169_start_xmit:
47+ * - publish dirty_tx ring index (write barrier)
48+ * - refresh cur_tx ring index and queue status (read barrier)
49+ * May the current thread miss the stopped queue condition,
50+ * a racing xmit thread can only have a right view of the
51+ * ring status.
52+ */
53 smp_mb();
54 if (netif_queue_stopped(dev) &&
55 (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch
new file mode 100644
index 00000000..c124fb6f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch
@@ -0,0 +1,82 @@
1From 70031dbb0e0a38f332ddb13359f9984bd25eb8c2 Mon Sep 17 00:00:00 2001
2From: Julien Ducourthial <jducourt@free.fr>
3Date: Wed, 9 May 2012 00:00:06 +0200
4Subject: [PATCH 70/86] r8169: fix unsigned int wraparound with TSO
5
6[ Upstream commit 477206a018f902895bfcd069dd820bfe94c187b1 ]
7
8The r8169 may get stuck or show bad behaviour after activating TSO :
9the net_device is not stopped when it has no more TX descriptors.
10This problem comes from TX_BUFS_AVAIL which may reach -1 when all
11transmit descriptors are in use. The patch simply tries to keep positive
12values.
13
14Tested with 8111d(onboard) on a D510MO, and with 8111e(onboard) on a
15Zotac 890GXITX.
16
17Signed-off-by: Julien Ducourthial <jducourt@free.fr>
18Acked-by: Francois Romieu <romieu@fr.zoreil.com>
19Signed-off-by: David S. Miller <davem@davemloft.net>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/net/ethernet/realtek/r8169.c | 16 ++++++++++------
23 1 file changed, 10 insertions(+), 6 deletions(-)
24
25diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
26index 5f3fa32..cc2565c 100644
27--- a/drivers/net/ethernet/realtek/r8169.c
28+++ b/drivers/net/ethernet/realtek/r8169.c
29@@ -62,8 +62,12 @@
30 #define R8169_MSG_DEFAULT \
31 (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_IFUP | NETIF_MSG_IFDOWN)
32
33-#define TX_BUFFS_AVAIL(tp) \
34- (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx - 1)
35+#define TX_SLOTS_AVAIL(tp) \
36+ (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx)
37+
38+/* A skbuff with nr_frags needs nr_frags+1 entries in the tx queue */
39+#define TX_FRAGS_READY_FOR(tp,nr_frags) \
40+ (TX_SLOTS_AVAIL(tp) >= (nr_frags + 1))
41
42 /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
43 The RTL chips use a 64 element hash table based on the Ethernet CRC. */
44@@ -5512,7 +5516,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
45 u32 opts[2];
46 int frags;
47
48- if (unlikely(TX_BUFFS_AVAIL(tp) < skb_shinfo(skb)->nr_frags)) {
49+ if (unlikely(!TX_FRAGS_READY_FOR(tp, skb_shinfo(skb)->nr_frags))) {
50 netif_err(tp, drv, dev, "BUG! Tx Ring full when queue awake!\n");
51 goto err_stop_0;
52 }
53@@ -5560,7 +5564,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
54
55 RTL_W8(TxPoll, NPQ);
56
57- if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) {
58+ if (!TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) {
59 /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must
60 * not miss a ring update when it notices a stopped queue.
61 */
62@@ -5574,7 +5578,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
63 * can't.
64 */
65 smp_mb();
66- if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
67+ if (TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS))
68 netif_wake_queue(dev);
69 }
70
71@@ -5683,7 +5687,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev,
72 */
73 smp_mb();
74 if (netif_queue_stopped(dev) &&
75- (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
76+ TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) {
77 netif_wake_queue(dev);
78 }
79 /*
80--
811.7.9.5
82
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch
new file mode 100644
index 00000000..53583ee9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch
@@ -0,0 +1,138 @@
1From 8094a25020703041f42a531dfac0a2ee24319119 Mon Sep 17 00:00:00 2001
2From: "David S. Miller" <davem@davemloft.net>
3Date: Thu, 10 May 2012 23:03:34 -0400
4Subject: [PATCH 71/86] Revert "net: maintain namespace isolation between vlan
5 and real device"
6
7[ Upstream commit 59b9997baba5242997ddc7bd96b1391f5275a5a4 ]
8
9This reverts commit 8a83a00b0735190384a348156837918271034144.
10
11It causes regressions for S390 devices, because it does an
12unconditional DST drop on SKBs for vlans and the QETH device
13needs the neighbour entry hung off the DST for certain things
14on transmit.
15
16Arnd can't remember exactly why he even needed this change.
17
18Conflicts:
19
20 drivers/net/macvlan.c
21 net/8021q/vlan_dev.c
22 net/core/dev.c
23
24Signed-off-by: David S. Miller <davem@davemloft.net>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 drivers/net/macvlan.c | 2 +-
28 include/linux/netdevice.h | 9 ---------
29 net/8021q/vlan_dev.c | 2 +-
30 net/core/dev.c | 36 +++++-------------------------------
31 4 files changed, 7 insertions(+), 42 deletions(-)
32
33diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
34index 959d448..97f342e 100644
35--- a/drivers/net/macvlan.c
36+++ b/drivers/net/macvlan.c
37@@ -258,7 +258,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
38
39 xmit_world:
40 skb->ip_summed = ip_summed;
41- skb_set_dev(skb, vlan->lowerdev);
42+ skb->dev = vlan->lowerdev;
43 return dev_queue_xmit(skb);
44 }
45
46diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
47index cbeb586..cb52340 100644
48--- a/include/linux/netdevice.h
49+++ b/include/linux/netdevice.h
50@@ -1420,15 +1420,6 @@ static inline bool netdev_uses_dsa_tags(struct net_device *dev)
51 return 0;
52 }
53
54-#ifndef CONFIG_NET_NS
55-static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
56-{
57- skb->dev = dev;
58-}
59-#else /* CONFIG_NET_NS */
60-void skb_set_dev(struct sk_buff *skb, struct net_device *dev);
61-#endif
62-
63 static inline bool netdev_uses_trailer_tags(struct net_device *dev)
64 {
65 #ifdef CONFIG_NET_DSA_TAG_TRAILER
66diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
67index bc25286..0cccca8 100644
68--- a/net/8021q/vlan_dev.c
69+++ b/net/8021q/vlan_dev.c
70@@ -156,7 +156,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
71 skb = __vlan_hwaccel_put_tag(skb, vlan_tci);
72 }
73
74- skb_set_dev(skb, vlan_dev_info(dev)->real_dev);
75+ skb->dev = vlan_dev_info(dev)->real_dev;
76 len = skb->len;
77 ret = dev_queue_xmit(skb);
78
79diff --git a/net/core/dev.c b/net/core/dev.c
80index 61a7baa..1cbddc9 100644
81--- a/net/core/dev.c
82+++ b/net/core/dev.c
83@@ -1607,10 +1607,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
84 kfree_skb(skb);
85 return NET_RX_DROP;
86 }
87- skb_set_dev(skb, dev);
88+ skb->dev = dev;
89+ skb_dst_drop(skb);
90 skb->tstamp.tv64 = 0;
91 skb->pkt_type = PACKET_HOST;
92 skb->protocol = eth_type_trans(skb, dev);
93+ skb->mark = 0;
94+ secpath_reset(skb);
95+ nf_reset(skb);
96 return netif_rx(skb);
97 }
98 EXPORT_SYMBOL_GPL(dev_forward_skb);
99@@ -1865,36 +1869,6 @@ void netif_device_attach(struct net_device *dev)
100 }
101 EXPORT_SYMBOL(netif_device_attach);
102
103-/**
104- * skb_dev_set -- assign a new device to a buffer
105- * @skb: buffer for the new device
106- * @dev: network device
107- *
108- * If an skb is owned by a device already, we have to reset
109- * all data private to the namespace a device belongs to
110- * before assigning it a new device.
111- */
112-#ifdef CONFIG_NET_NS
113-void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
114-{
115- skb_dst_drop(skb);
116- if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) {
117- secpath_reset(skb);
118- nf_reset(skb);
119- skb_init_secmark(skb);
120- skb->mark = 0;
121- skb->priority = 0;
122- skb->nf_trace = 0;
123- skb->ipvs_property = 0;
124-#ifdef CONFIG_NET_SCHED
125- skb->tc_index = 0;
126-#endif
127- }
128- skb->dev = dev;
129-}
130-EXPORT_SYMBOL(skb_set_dev);
131-#endif /* CONFIG_NET_NS */
132-
133 /*
134 * Invalidate hardware checksum when packet is to be mangled, and
135 * complete checksum manually on outgoing path.
136--
1371.7.9.5
138
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch
new file mode 100644
index 00000000..6cb2e1a3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch
@@ -0,0 +1,88 @@
1From 23c5783d07dcd62f8b86c4eaefef08f2892cbbd0 Mon Sep 17 00:00:00 2001
2From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
3Date: Fri, 4 May 2012 05:24:54 +0000
4Subject: [PATCH 72/86] sctp: check cached dst before using it
5
6[ Upstream commit e0268868ba064980488fc8c194db3d8e9fb2959c ]
7
8dst_check() will take care of SA (and obsolete field), hence
9IPsec rekeying scenario is taken into account.
10
11Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
12Acked-by: Vlad Yaseivch <vyasevich@gmail.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 include/net/sctp/sctp.h | 13 +++++++++++++
17 net/sctp/output.c | 4 +---
18 net/sctp/transport.c | 17 -----------------
19 3 files changed, 14 insertions(+), 20 deletions(-)
20
21diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
22index 6a72a58..ad03988 100644
23--- a/include/net/sctp/sctp.h
24+++ b/include/net/sctp/sctp.h
25@@ -703,4 +703,17 @@ static inline void sctp_v4_map_v6(union sctp_addr *addr)
26 addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff);
27 }
28
29+/* The cookie is always 0 since this is how it's used in the
30+ * pmtu code.
31+ */
32+static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t)
33+{
34+ if (t->dst && !dst_check(t->dst, 0)) {
35+ dst_release(t->dst);
36+ t->dst = NULL;
37+ }
38+
39+ return t->dst;
40+}
41+
42 #endif /* __net_sctp_h__ */
43diff --git a/net/sctp/output.c b/net/sctp/output.c
44index 817174e..8fc4dcd 100644
45--- a/net/sctp/output.c
46+++ b/net/sctp/output.c
47@@ -377,9 +377,7 @@ int sctp_packet_transmit(struct sctp_packet *packet)
48 */
49 skb_set_owner_w(nskb, sk);
50
51- /* The 'obsolete' field of dst is set to 2 when a dst is freed. */
52- if (!dst || (dst->obsolete > 1)) {
53- dst_release(dst);
54+ if (!sctp_transport_dst_check(tp)) {
55 sctp_transport_route(tp, NULL, sctp_sk(sk));
56 if (asoc && (asoc->param_flags & SPP_PMTUD_ENABLE)) {
57 sctp_assoc_sync_pmtu(asoc);
58diff --git a/net/sctp/transport.c b/net/sctp/transport.c
59index 394c57c..8da4481 100644
60--- a/net/sctp/transport.c
61+++ b/net/sctp/transport.c
62@@ -226,23 +226,6 @@ void sctp_transport_pmtu(struct sctp_transport *transport, struct sock *sk)
63 transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT;
64 }
65
66-/* this is a complete rip-off from __sk_dst_check
67- * the cookie is always 0 since this is how it's used in the
68- * pmtu code
69- */
70-static struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t)
71-{
72- struct dst_entry *dst = t->dst;
73-
74- if (dst && dst->obsolete && dst->ops->check(dst, 0) == NULL) {
75- dst_release(t->dst);
76- t->dst = NULL;
77- return NULL;
78- }
79-
80- return dst;
81-}
82-
83 void sctp_transport_update_pmtu(struct sctp_transport *t, u32 pmtu)
84 {
85 struct dst_entry *dst;
86--
871.7.9.5
88
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch
new file mode 100644
index 00000000..797dd949
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch
@@ -0,0 +1,42 @@
1From 102f9a70f2f084fe0380f1df716f89427cf5f965 Mon Sep 17 00:00:00 2001
2From: Felix Fietkau <nbd@openwrt.org>
3Date: Tue, 29 May 2012 03:35:08 +0000
4Subject: [PATCH 73/86] skb: avoid unnecessary reallocations in __skb_cow
5
6[ Upstream commit 617c8c11236716dcbda877e764b7bf37c6fd8063 ]
7
8At the beginning of __skb_cow, headroom gets set to a minimum of
9NET_SKB_PAD. This causes unnecessary reallocations if the buffer was not
10cloned and the headroom is just below NET_SKB_PAD, but still more than the
11amount requested by the caller.
12This was showing up frequently in my tests on VLAN tx, where
13vlan_insert_tag calls skb_cow_head(skb, VLAN_HLEN).
14
15Locally generated packets should have enough headroom, and for forward
16paths, we already have NET_SKB_PAD bytes of headroom, so we don't need to
17add any extra space here.
18
19Signed-off-by: Felix Fietkau <nbd@openwrt.org>
20Signed-off-by: Eric Dumazet <edumazet@google.com>
21Signed-off-by: David S. Miller <davem@davemloft.net>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 include/linux/skbuff.h | 2 --
25 1 file changed, 2 deletions(-)
26
27diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
28index e689b47..bdb4590 100644
29--- a/include/linux/skbuff.h
30+++ b/include/linux/skbuff.h
31@@ -1866,8 +1866,6 @@ static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
32 {
33 int delta = 0;
34
35- if (headroom < NET_SKB_PAD)
36- headroom = NET_SKB_PAD;
37 if (headroom > skb_headroom(skb))
38 delta = headroom - skb_headroom(skb);
39
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch
new file mode 100644
index 00000000..421e97ac
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch
@@ -0,0 +1,100 @@
1From f7088713900622e33404d09b3b16e44d780ea515 Mon Sep 17 00:00:00 2001
2From: Benjamin Poirier <bpoirier@suse.de>
3Date: Thu, 24 May 2012 11:32:38 +0000
4Subject: [PATCH 74/86] xfrm: take net hdr len into account for esp payload
5 size calculation
6
7[ Upstream commit 91657eafb64b4cb53ec3a2fbc4afc3497f735788 ]
8
9Corrects the function that determines the esp payload size. The calculations
10done in esp{4,6}_get_mtu() lead to overlength frames in transport mode for
11certain mtu values and suboptimal frames for others.
12
13According to what is done, mainly in esp{,6}_output() and tcp_mtu_to_mss(),
14net_header_len must be taken into account before doing the alignment
15calculation.
16
17Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
18Signed-off-by: David S. Miller <davem@davemloft.net>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 net/ipv4/esp4.c | 24 +++++++++---------------
22 net/ipv6/esp6.c | 18 +++++++-----------
23 2 files changed, 16 insertions(+), 26 deletions(-)
24
25diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c
26index a5b4134..530787b 100644
27--- a/net/ipv4/esp4.c
28+++ b/net/ipv4/esp4.c
29@@ -457,28 +457,22 @@ static u32 esp4_get_mtu(struct xfrm_state *x, int mtu)
30 struct esp_data *esp = x->data;
31 u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
32 u32 align = max_t(u32, blksize, esp->padlen);
33- u32 rem;
34-
35- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
36- rem = mtu & (align - 1);
37- mtu &= ~(align - 1);
38+ unsigned int net_adj;
39
40 switch (x->props.mode) {
41- case XFRM_MODE_TUNNEL:
42- break;
43- default:
44 case XFRM_MODE_TRANSPORT:
45- /* The worst case */
46- mtu -= blksize - 4;
47- mtu += min_t(u32, blksize - 4, rem);
48- break;
49 case XFRM_MODE_BEET:
50- /* The worst case. */
51- mtu += min_t(u32, IPV4_BEET_PHMAXLEN, rem);
52+ net_adj = sizeof(struct iphdr);
53 break;
54+ case XFRM_MODE_TUNNEL:
55+ net_adj = 0;
56+ break;
57+ default:
58+ BUG();
59 }
60
61- return mtu - 2;
62+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
63+ net_adj) & ~(align - 1)) + (net_adj - 2);
64 }
65
66 static void esp4_err(struct sk_buff *skb, u32 info)
67diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c
68index 1ac7938..65dd543 100644
69--- a/net/ipv6/esp6.c
70+++ b/net/ipv6/esp6.c
71@@ -411,19 +411,15 @@ static u32 esp6_get_mtu(struct xfrm_state *x, int mtu)
72 struct esp_data *esp = x->data;
73 u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
74 u32 align = max_t(u32, blksize, esp->padlen);
75- u32 rem;
76+ unsigned int net_adj;
77
78- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
79- rem = mtu & (align - 1);
80- mtu &= ~(align - 1);
81-
82- if (x->props.mode != XFRM_MODE_TUNNEL) {
83- u32 padsize = ((blksize - 1) & 7) + 1;
84- mtu -= blksize - padsize;
85- mtu += min_t(u32, blksize - padsize, rem);
86- }
87+ if (x->props.mode != XFRM_MODE_TUNNEL)
88+ net_adj = sizeof(struct ipv6hdr);
89+ else
90+ net_adj = 0;
91
92- return mtu - 2;
93+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
94+ net_adj) & ~(align - 1)) + (net_adj - 2);
95 }
96
97 static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
98--
991.7.9.5
100
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch
new file mode 100644
index 00000000..868bccea
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch
@@ -0,0 +1,51 @@
1From f01aa357417f413fff9af7ef10496ece02d2c8d7 Mon Sep 17 00:00:00 2001
2From: Andy Whitcroft <apw@canonical.com>
3Date: Thu, 3 May 2012 14:48:26 +0100
4Subject: [PATCH 75/86] ACPI battery: only refresh the sysfs files when
5 pertinent information changes
6
7commit c5971456964290da7e98222892797b71ef793e62 upstream.
8
9We only need to regenerate the sysfs files when the capacity units
10change, avoid the update otherwise.
11
12The origin of this issue is dates way back to 2.6.38:
13da8aeb92d4853f37e281f11fddf61f9c7d84c3cd
14(ACPI / Battery: Update information on info notification and resume)
15
16Signed-off-by: Andy Whitcroft <apw@canonical.com>
17Tested-by: Ralf Jung <post@ralfj.de>
18Signed-off-by: Len Brown <len.brown@intel.com>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 drivers/acpi/battery.c | 10 +++++++++-
22 1 file changed, 9 insertions(+), 1 deletion(-)
23
24diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
25index 7711d94..5535477 100644
26--- a/drivers/acpi/battery.c
27+++ b/drivers/acpi/battery.c
28@@ -643,11 +643,19 @@ static int acpi_battery_update(struct acpi_battery *battery)
29
30 static void acpi_battery_refresh(struct acpi_battery *battery)
31 {
32+ int power_unit;
33+
34 if (!battery->bat.dev)
35 return;
36
37+ power_unit = battery->power_unit;
38+
39 acpi_battery_get_info(battery);
40- /* The battery may have changed its reporting units. */
41+
42+ if (power_unit == battery->power_unit)
43+ return;
44+
45+ /* The battery has changed its reporting units. */
46 sysfs_remove_battery(battery);
47 sysfs_add_battery(battery);
48 }
49--
501.7.9.5
51
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch
new file mode 100644
index 00000000..7c0a003c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch
@@ -0,0 +1,188 @@
1From f959a45c2bfd20be1435dee828b7e4eadd862b45 Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Wed, 30 May 2012 16:25:41 -0700
4Subject: [PATCH 76/86] target/file: Use O_DSYNC by default for FILEIO
5 backends
6
7commit a4dff3043c231d57f982af635c9d2192ee40e5ae upstream.
8
9Convert to use O_DSYNC for all cases at FILEIO backend creation time to
10avoid the extra syncing of pure timestamp updates with legacy O_SYNC during
11default operation as recommended by hch. Continue to do this independently of
12Write Cache Enable (WCE) bit, as WCE=0 is currently the default for all backend
13devices and enabled by user on per device basis via attrib/emulate_write_cache.
14
15This patch drops the now unnecessary fd_buffered_io= token usage that was
16originally signalling when to explictly disable O_SYNC at backend creation
17time for buffered I/O operation. This can end up being dangerous for a number
18of reasons during physical node failure, so go ahead and drop this option
19for now when O_DSYNC is used as the default.
20
21Also allow explict FUA WRITEs -> vfs_fsync_range() call to function in
22fd_execute_cmd() independently of WCE bit setting.
23
24Reported-by: Christoph Hellwig <hch@lst.de>
25Cc: Linus Torvalds <torvalds@linux-foundation.org>
26Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28[bwh: Backported to 3.2:
29 - We have fd_do_task() and not fd_execute_cmd()
30 - Various fields are in struct se_task rather than struct se_cmd
31 - fd_create_virtdevice() flags initialisation hasn't been cleaned up]
32---
33 drivers/target/target_core_file.c | 78 ++++++++-----------------------------
34 drivers/target/target_core_file.h | 1 -
35 2 files changed, 17 insertions(+), 62 deletions(-)
36
37diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
38index cad8b92..455a251 100644
39--- a/drivers/target/target_core_file.c
40+++ b/drivers/target/target_core_file.c
41@@ -134,21 +134,11 @@ static struct se_device *fd_create_virtdevice(
42 ret = PTR_ERR(dev_p);
43 goto fail;
44 }
45-#if 0
46- if (di->no_create_file)
47- flags = O_RDWR | O_LARGEFILE;
48- else
49- flags = O_RDWR | O_CREAT | O_LARGEFILE;
50-#else
51- flags = O_RDWR | O_CREAT | O_LARGEFILE;
52-#endif
53-/* flags |= O_DIRECT; */
54 /*
55- * If fd_buffered_io=1 has not been set explicitly (the default),
56- * use O_SYNC to force FILEIO writes to disk.
57+ * Use O_DSYNC by default instead of O_SYNC to forgo syncing
58+ * of pure timestamp updates.
59 */
60- if (!(fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO))
61- flags |= O_SYNC;
62+ flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC;
63
64 file = filp_open(dev_p, flags, 0600);
65 if (IS_ERR(file)) {
66@@ -400,26 +390,6 @@ static void fd_emulate_sync_cache(struct se_task *task)
67 transport_complete_sync_cache(cmd, ret == 0);
68 }
69
70-/*
71- * WRITE Force Unit Access (FUA) emulation on a per struct se_task
72- * LBA range basis..
73- */
74-static void fd_emulate_write_fua(struct se_cmd *cmd, struct se_task *task)
75-{
76- struct se_device *dev = cmd->se_dev;
77- struct fd_dev *fd_dev = dev->dev_ptr;
78- loff_t start = task->task_lba * dev->se_sub_dev->se_dev_attrib.block_size;
79- loff_t end = start + task->task_size;
80- int ret;
81-
82- pr_debug("FILEIO: FUA WRITE LBA: %llu, bytes: %u\n",
83- task->task_lba, task->task_size);
84-
85- ret = vfs_fsync_range(fd_dev->fd_file, start, end, 1);
86- if (ret != 0)
87- pr_err("FILEIO: vfs_fsync_range() failed: %d\n", ret);
88-}
89-
90 static int fd_do_task(struct se_task *task)
91 {
92 struct se_cmd *cmd = task->task_se_cmd;
93@@ -434,19 +404,21 @@ static int fd_do_task(struct se_task *task)
94 ret = fd_do_readv(task);
95 } else {
96 ret = fd_do_writev(task);
97-
98+ /*
99+ * Perform implict vfs_fsync_range() for fd_do_writev() ops
100+ * for SCSI WRITEs with Forced Unit Access (FUA) set.
101+ * Allow this to happen independent of WCE=0 setting.
102+ */
103 if (ret > 0 &&
104- dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0 &&
105 dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 &&
106 (cmd->se_cmd_flags & SCF_FUA)) {
107- /*
108- * We might need to be a bit smarter here
109- * and return some sense data to let the initiator
110- * know the FUA WRITE cache sync failed..?
111- */
112- fd_emulate_write_fua(cmd, task);
113- }
114+ struct fd_dev *fd_dev = dev->dev_ptr;
115+ loff_t start = task->task_lba *
116+ dev->se_sub_dev->se_dev_attrib.block_size;
117+ loff_t end = start + task->task_size;
118
119+ vfs_fsync_range(fd_dev->fd_file, start, end, 1);
120+ }
121 }
122
123 if (ret < 0) {
124@@ -478,7 +450,6 @@ enum {
125 static match_table_t tokens = {
126 {Opt_fd_dev_name, "fd_dev_name=%s"},
127 {Opt_fd_dev_size, "fd_dev_size=%s"},
128- {Opt_fd_buffered_io, "fd_buffered_io=%d"},
129 {Opt_err, NULL}
130 };
131
132@@ -490,7 +461,7 @@ static ssize_t fd_set_configfs_dev_params(
133 struct fd_dev *fd_dev = se_dev->se_dev_su_ptr;
134 char *orig, *ptr, *arg_p, *opts;
135 substring_t args[MAX_OPT_ARGS];
136- int ret = 0, arg, token;
137+ int ret = 0, token;
138
139 opts = kstrdup(page, GFP_KERNEL);
140 if (!opts)
141@@ -534,19 +505,6 @@ static ssize_t fd_set_configfs_dev_params(
142 " bytes\n", fd_dev->fd_dev_size);
143 fd_dev->fbd_flags |= FBDF_HAS_SIZE;
144 break;
145- case Opt_fd_buffered_io:
146- match_int(args, &arg);
147- if (arg != 1) {
148- pr_err("bogus fd_buffered_io=%d value\n", arg);
149- ret = -EINVAL;
150- goto out;
151- }
152-
153- pr_debug("FILEIO: Using buffered I/O"
154- " operations for struct fd_dev\n");
155-
156- fd_dev->fbd_flags |= FDBD_USE_BUFFERED_IO;
157- break;
158 default:
159 break;
160 }
161@@ -578,10 +536,8 @@ static ssize_t fd_show_configfs_dev_params(
162 ssize_t bl = 0;
163
164 bl = sprintf(b + bl, "TCM FILEIO ID: %u", fd_dev->fd_dev_id);
165- bl += sprintf(b + bl, " File: %s Size: %llu Mode: %s\n",
166- fd_dev->fd_dev_name, fd_dev->fd_dev_size,
167- (fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO) ?
168- "Buffered" : "Synchronous");
169+ bl += sprintf(b + bl, " File: %s Size: %llu Mode: O_DSYNC\n",
170+ fd_dev->fd_dev_name, fd_dev->fd_dev_size);
171 return bl;
172 }
173
174diff --git a/drivers/target/target_core_file.h b/drivers/target/target_core_file.h
175index 59e6e73..53ece69 100644
176--- a/drivers/target/target_core_file.h
177+++ b/drivers/target/target_core_file.h
178@@ -18,7 +18,6 @@ struct fd_request {
179
180 #define FBDF_HAS_PATH 0x01
181 #define FBDF_HAS_SIZE 0x02
182-#define FDBD_USE_BUFFERED_IO 0x04
183
184 struct fd_dev {
185 u32 fbd_flags;
186--
1871.7.9.5
188
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch
new file mode 100644
index 00000000..5d13500c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch
@@ -0,0 +1,84 @@
1From 24791636a8052063d0f0ee3df30d8fce92e59398 Mon Sep 17 00:00:00 2001
2From: Joerg Roedel <joerg.roedel@amd.com>
3Date: Thu, 31 May 2012 17:38:11 +0200
4Subject: [PATCH 77/86] iommu/amd: Cache pdev pointer to root-bridge
5
6commit c1bf94ec1e12d76838ad485158aecf208ebd8fb9 upstream.
7
8At some point pci_get_bus_and_slot started to enable
9interrupts. Since this function is used in the
10amd_iommu_resume path it will enable interrupts on resume
11which causes a warning. The fix will use a cached pointer
12to the root-bridge to re-enable the IOMMU in case the BIOS
13is broken.
14
15Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/iommu/amd_iommu_init.c | 13 +++++--------
19 drivers/iommu/amd_iommu_types.h | 3 +++
20 2 files changed, 8 insertions(+), 8 deletions(-)
21
22diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
23index 20d5852..6269eb0 100644
24--- a/drivers/iommu/amd_iommu_init.c
25+++ b/drivers/iommu/amd_iommu_init.c
26@@ -943,6 +943,9 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
27 if (!iommu->dev)
28 return 1;
29
30+ iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
31+ PCI_DEVFN(0, 0));
32+
33 iommu->cap_ptr = h->cap_ptr;
34 iommu->pci_seg = h->pci_seg;
35 iommu->mmio_phys = h->mmio_phys;
36@@ -1225,20 +1228,16 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
37 {
38 int i, j;
39 u32 ioc_feature_control;
40- struct pci_dev *pdev = NULL;
41+ struct pci_dev *pdev = iommu->root_pdev;
42
43 /* RD890 BIOSes may not have completely reconfigured the iommu */
44- if (!is_rd890_iommu(iommu->dev))
45+ if (!is_rd890_iommu(iommu->dev) || !pdev)
46 return;
47
48 /*
49 * First, we need to ensure that the iommu is enabled. This is
50 * controlled by a register in the northbridge
51 */
52- pdev = pci_get_bus_and_slot(iommu->dev->bus->number, PCI_DEVFN(0, 0));
53-
54- if (!pdev)
55- return;
56
57 /* Select Northbridge indirect register 0x75 and enable writing */
58 pci_write_config_dword(pdev, 0x60, 0x75 | (1 << 7));
59@@ -1248,8 +1247,6 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
60 if (!(ioc_feature_control & 0x1))
61 pci_write_config_dword(pdev, 0x64, ioc_feature_control | 1);
62
63- pci_dev_put(pdev);
64-
65 /* Restore the iommu BAR */
66 pci_write_config_dword(iommu->dev, iommu->cap_ptr + 4,
67 iommu->stored_addr_lo);
68diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
69index 5b9c507..40ab83b 100644
70--- a/drivers/iommu/amd_iommu_types.h
71+++ b/drivers/iommu/amd_iommu_types.h
72@@ -385,6 +385,9 @@ struct amd_iommu {
73 /* Pointer to PCI device of this IOMMU */
74 struct pci_dev *dev;
75
76+ /* Cache pdev to root device for resume quirks */
77+ struct pci_dev *root_pdev;
78+
79 /* physical address of MMIO space */
80 u64 mmio_phys;
81 /* virtual address of MMIO space */
82--
831.7.9.5
84
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch
new file mode 100644
index 00000000..70ca675d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch
@@ -0,0 +1,38 @@
1From eec9a1ae19fea9a7eeab32de2371932e845f8486 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Tue, 5 Jun 2012 09:50:29 -0400
4Subject: [PATCH 78/86] drm/radeon/kms: add new Palm, Sumo PCI ids
5
6commit 4a6991cc1fad514745b79181df3ace72d561e7aa upstream.
7
8Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9Signed-off-by: Dave Airlie <airlied@redhat.com>
10[bwh: Backported to 3.2: adjust context]
11Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
12---
13 include/drm/drm_pciids.h | 2 ++
14 1 file changed, 2 insertions(+)
15
16diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
17index 14b6cd0..78654ca 100644
18--- a/include/drm/drm_pciids.h
19+++ b/include/drm/drm_pciids.h
20@@ -493,6 +493,7 @@
21 {0x1002, 0x9645, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO2|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
22 {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
23 {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
24+ {0x1002, 0x9649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\
25 {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
26 {0x1002, 0x964b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
27 {0x1002, 0x964c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
28@@ -512,6 +513,7 @@
29 {0x1002, 0x9807, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
30 {0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
31 {0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
32+ {0x1002, 0x980A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
33 {0, 0, 0}
34
35 #define r128_PCI_IDS \
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch
new file mode 100644
index 00000000..024015e7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch
@@ -0,0 +1,37 @@
1From 3ed59dee924ffa272751ccbb5d84c57cef96a779 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Tue, 5 Jun 2012 09:50:30 -0400
4Subject: [PATCH 79/86] drm/radeon/kms: add new BTC PCI ids
5
6commit a2bef8ce826dd1e787fd8ad9b6e0566ba59dab43 upstream.
7
8Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9Signed-off-by: Dave Airlie <airlied@redhat.com>
10Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
11---
12 include/drm/drm_pciids.h | 2 ++
13 1 file changed, 2 insertions(+)
14
15diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
16index 78654ca..def807c 100644
17--- a/include/drm/drm_pciids.h
18+++ b/include/drm/drm_pciids.h
19@@ -181,6 +181,7 @@
20 {0x1002, 0x6747, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
21 {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
22 {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
23+ {0x1002, 0x674A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
24 {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
25 {0x1002, 0x6751, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
26 {0x1002, 0x6758, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
27@@ -198,6 +199,7 @@
28 {0x1002, 0x6767, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
29 {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
30 {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
31+ {0x1002, 0x6771, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
32 {0x1002, 0x6772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
33 {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
34 {0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch
new file mode 100644
index 00000000..7314c7dd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch
@@ -0,0 +1,56 @@
1From b209359cc7df5f400a4c1cd342bf19afc377961e Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com>
3Date: Thu, 7 Jun 2012 14:21:13 -0700
4Subject: [PATCH 80/86] btree: fix tree corruption in btree_get_prev()
5
6commit cbf8ae32f66a9ceb8907ad9e16663c2a29e48990 upstream.
7
8The memory the parameter __key points to is used as an iterator in
9btree_get_prev(), so if we save off a bkey() pointer in retry_key and
10then assign that to __key, we'll end up corrupting the btree internals
11when we do eg
12
13 longcpy(__key, bkey(geo, node, i), geo->keylen);
14
15to return the key value. What we should do instead is use longcpy() to
16copy the key value that retry_key points to __key.
17
18This can cause a btree to get corrupted by seemingly read-only
19operations such as btree_for_each_safe.
20
21[akpm@linux-foundation.org: avoid the double longcpy()]
22Signed-off-by: Roland Dreier <roland@purestorage.com>
23Acked-by: Joern Engel <joern@logfs.org>
24Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
25Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
26Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
27---
28 lib/btree.c | 4 ++--
29 1 file changed, 2 insertions(+), 2 deletions(-)
30
31diff --git a/lib/btree.c b/lib/btree.c
32index 2a34392..297124d 100644
33--- a/lib/btree.c
34+++ b/lib/btree.c
35@@ -319,8 +319,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo,
36
37 if (head->height == 0)
38 return NULL;
39-retry:
40 longcpy(key, __key, geo->keylen);
41+retry:
42 dec_key(geo, key);
43
44 node = head->node;
45@@ -351,7 +351,7 @@ retry:
46 }
47 miss:
48 if (retry_key) {
49- __key = retry_key;
50+ longcpy(key, retry_key, geo->keylen);
51 retry_key = NULL;
52 goto retry;
53 }
54--
551.7.9.5
56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch
new file mode 100644
index 00000000..0c34a7d5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch
@@ -0,0 +1,62 @@
1From 5e25d4d8ce731b609f1be874fd76f66bc03de441 Mon Sep 17 00:00:00 2001
2From: Ulrich Drepper <drepper@akkadia.org>
3Date: Tue, 29 May 2012 15:06:30 -0700
4Subject: [PATCH 81/86] kbuild: install kernel-page-flags.h
5
6commit 9295b7a07c859a42346221b5839be0ae612333b0 upstream.
7
8Programs using /proc/kpageflags need to know about the various flags. The
9<linux/kernel-page-flags.h> provides them and the comments in the file
10indicate that it is supposed to be used by user-level code. But the file
11is not installed.
12
13Install the headers and mark the unstable flags as out-of-bounds. The
14page-type tool is also adjusted to not duplicate the definitions
15
16Signed-off-by: Ulrich Drepper <drepper@gmail.com>
17Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
18Acked-by: Fengguang Wu <fengguang.wu@intel.com>
19Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
20Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
21[bwh: Backported to 3.2: adjust context; drop change to missing tools/vm/]
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 include/linux/Kbuild | 1 +
25 include/linux/kernel-page-flags.h | 4 ++++
26 2 files changed, 5 insertions(+)
27
28diff --git a/include/linux/Kbuild b/include/linux/Kbuild
29index 619b565..bd21ecd 100644
30--- a/include/linux/Kbuild
31+++ b/include/linux/Kbuild
32@@ -224,6 +224,7 @@ header-y += kd.h
33 header-y += kdev_t.h
34 header-y += kernel.h
35 header-y += kernelcapi.h
36+header-y += kernel-page-flags.h
37 header-y += keyboard.h
38 header-y += keyctl.h
39 header-y += l2tp.h
40diff --git a/include/linux/kernel-page-flags.h b/include/linux/kernel-page-flags.h
41index bd92a89..096b05d 100644
42--- a/include/linux/kernel-page-flags.h
43+++ b/include/linux/kernel-page-flags.h
44@@ -31,6 +31,8 @@
45
46 #define KPF_KSM 21
47
48+#ifdef __KERNEL__
49+
50 /* kernel hacking assistances
51 * WARNING: subject to change, never rely on them!
52 */
53@@ -43,4 +45,6 @@
54 #define KPF_ARCH 38
55 #define KPF_UNCACHED 39
56
57+#endif /* __KERNEL__ */
58+
59 #endif /* LINUX_KERNEL_PAGE_FLAGS_H */
60--
611.7.9.5
62
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch
new file mode 100644
index 00000000..a55d8f9e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch
@@ -0,0 +1,49 @@
1From 7d6dc5bd5f0608f96ec3d12d9eaecf45b053ccb8 Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <edumazet@google.com>
3Date: Mon, 28 May 2012 22:31:41 +0000
4Subject: [PATCH 82/86] asix: allow full size 8021Q frames to be received
5
6commit 9dae31009b1a00d926c6fe032d5a88099620adc3 upstream.
7
8asix driver drops 8021Q full size frames because it doesn't take into
9account VLAN header size.
10
11Tested on AX88772 adapter.
12
13Signed-off-by: Eric Dumazet <edumazet@google.com>
14CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15CC: Allan Chou <allan@asix.com.tw>
16CC: Trond Wuellner <trond@chromium.org>
17CC: Grant Grundler <grundler@chromium.org>
18CC: Paul Stewart <pstew@chromium.org>
19Signed-off-by: David S. Miller <davem@davemloft.net>
20[bwh: Backported to 3.2: no offset used in asix_rx_fixup()]
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 drivers/net/usb/asix.c | 3 ++-
24 1 file changed, 2 insertions(+), 1 deletion(-)
25
26diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
27index a9abee8..fc147a5 100644
28--- a/drivers/net/usb/asix.c
29+++ b/drivers/net/usb/asix.c
30@@ -35,6 +35,7 @@
31 #include <linux/crc32.h>
32 #include <linux/usb/usbnet.h>
33 #include <linux/slab.h>
34+#include <linux/if_vlan.h>
35
36 #define DRIVER_VERSION "08-Nov-2011"
37 #define DRIVER_NAME "asix"
38@@ -348,7 +349,7 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
39 return 2;
40 }
41
42- if (size > dev->net->mtu + ETH_HLEN) {
43+ if (size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
44 netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n",
45 size);
46 return 0;
47--
481.7.9.5
49
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch
new file mode 100644
index 00000000..b306294d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch
@@ -0,0 +1,54 @@
1From 2060683e126ab7d9bb0ed4a089f572d6f1563015 Mon Sep 17 00:00:00 2001
2From: Theodore Ts'o <tytso@mit.edu>
3Date: Thu, 31 May 2012 23:46:01 -0400
4Subject: [PATCH 83/86] ext4: don't trash state flags in EXT4_IOC_SETFLAGS
5
6commit 79906964a187c405db72a3abc60eb9b50d804fbc upstream.
7
8In commit 353eb83c we removed i_state_flags with 64-bit longs, But
9when handling the EXT4_IOC_SETFLAGS ioctl, we replace i_flags
10directly, which trashes the state flags which are stored in the high
1132-bits of i_flags on 64-bit platforms. So use the the
12ext4_{set,clear}_inode_flags() functions which use atomic bit
13manipulation functions instead.
14
15Reported-by: Tao Ma <boyu.mt@taobao.com>
16Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 fs/ext4/ioctl.c | 12 +++++++++---
20 1 file changed, 9 insertions(+), 3 deletions(-)
21
22diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
23index ab25f57..1b7bc39 100644
24--- a/fs/ext4/ioctl.c
25+++ b/fs/ext4/ioctl.c
26@@ -36,7 +36,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
27 handle_t *handle = NULL;
28 int err, migrate = 0;
29 struct ext4_iloc iloc;
30- unsigned int oldflags;
31+ unsigned int oldflags, mask, i;
32 unsigned int jflag;
33
34 if (!inode_owner_or_capable(inode))
35@@ -113,8 +113,14 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
36 if (err)
37 goto flags_err;
38
39- flags = flags & EXT4_FL_USER_MODIFIABLE;
40- flags |= oldflags & ~EXT4_FL_USER_MODIFIABLE;
41+ for (i = 0, mask = 1; i < 32; i++, mask <<= 1) {
42+ if (!(mask & EXT4_FL_USER_MODIFIABLE))
43+ continue;
44+ if (mask & flags)
45+ ext4_set_inode_flag(inode, i);
46+ else
47+ ext4_clear_inode_flag(inode, i);
48+ }
49 ei->i_flags = flags;
50
51 ext4_set_inode_flags(inode);
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch
new file mode 100644
index 00000000..1529c65e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch
@@ -0,0 +1,34 @@
1From 829f95bac40b76e3eb7d26d5bab4a156d749ae33 Mon Sep 17 00:00:00 2001
2From: Tao Ma <boyu.mt@taobao.com>
3Date: Thu, 7 Jun 2012 19:04:19 -0400
4Subject: [PATCH 84/86] ext4: don't set i_flags in EXT4_IOC_SETFLAGS
5
6commit b22b1f178f6799278d3178d894f37facb2085765 upstream.
7
8Commit 7990696 uses the ext4_{set,clear}_inode_flags() functions to
9change the i_flags automatically but fails to remove the error setting
10of i_flags. So we still have the problem of trashing state flags.
11Fix this by removing the assignment.
12
13Signed-off-by: Tao Ma <boyu.mt@taobao.com>
14Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 fs/ext4/ioctl.c | 1 -
18 1 file changed, 1 deletion(-)
19
20diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
21index 1b7bc39..76a6e3b 100644
22--- a/fs/ext4/ioctl.c
23+++ b/fs/ext4/ioctl.c
24@@ -121,7 +121,6 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
25 else
26 ext4_clear_inode_flag(inode, i);
27 }
28- ei->i_flags = flags;
29
30 ext4_set_inode_flags(inode);
31 inode->i_ctime = ext4_current_time(inode);
32--
331.7.9.5
34
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch
new file mode 100644
index 00000000..3d05f088
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch
@@ -0,0 +1,76 @@
1From f83716d6c669e13a5c79262a51a267a752559c5d Mon Sep 17 00:00:00 2001
2From: Theodore Ts'o <tytso@mit.edu>
3Date: Thu, 7 Jun 2012 18:56:06 -0400
4Subject: [PATCH 85/86] ext4: fix the free blocks calculation for ext3 file
5 systems w/ uninit_bg
6
7commit b0dd6b70f0fda17ae9762fbb72d98e40a4f66556 upstream.
8
9Ext3 filesystems that are converted to use as many ext4 file system
10features as possible will enable uninit_bg to speed up e2fsck times.
11These file systems will have a native ext3 layout of inode tables and
12block allocation bitmaps (as opposed to ext4's flex_bg layout).
13Unfortunately, in these cases, when first allocating a block in an
14uninitialized block group, ext4 would incorrectly calculate the number
15of free blocks in that block group, and then errorneously report that
16the file system was corrupt:
17
18EXT4-fs error (device vdd): ext4_mb_generate_buddy:741: group 30, 32254 clusters in bitmap, 32258 in gd
19
20This problem can be reproduced via:
21
22 mke2fs -q -t ext4 -O ^flex_bg /dev/vdd 5g
23 mount -t ext4 /dev/vdd /mnt
24 fallocate -l 4600m /mnt/test
25
26The problem was caused by a bone headed mistake in the check to see if a
27particular metadata block was part of the block group.
28
29Many thanks to Kees Cook for finding and bisecting the buggy commit
30which introduced this bug (commit fd034a84e1, present since v3.2).
31
32Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
33Reported-by: Kees Cook <keescook@chromium.org>
34Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
35Tested-by: Kees Cook <keescook@chromium.org>
36Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
37---
38 fs/ext4/balloc.c | 8 ++++----
39 1 file changed, 4 insertions(+), 4 deletions(-)
40
41diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
42index 12ccacd..914bf9e 100644
43--- a/fs/ext4/balloc.c
44+++ b/fs/ext4/balloc.c
45@@ -88,8 +88,8 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
46 * unusual file system layouts.
47 */
48 if (ext4_block_in_group(sb, ext4_block_bitmap(sb, gdp), block_group)) {
49- block_cluster = EXT4_B2C(sbi, (start -
50- ext4_block_bitmap(sb, gdp)));
51+ block_cluster = EXT4_B2C(sbi,
52+ ext4_block_bitmap(sb, gdp) - start);
53 if (block_cluster < num_clusters)
54 block_cluster = -1;
55 else if (block_cluster == num_clusters) {
56@@ -100,7 +100,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
57
58 if (ext4_block_in_group(sb, ext4_inode_bitmap(sb, gdp), block_group)) {
59 inode_cluster = EXT4_B2C(sbi,
60- start - ext4_inode_bitmap(sb, gdp));
61+ ext4_inode_bitmap(sb, gdp) - start);
62 if (inode_cluster < num_clusters)
63 inode_cluster = -1;
64 else if (inode_cluster == num_clusters) {
65@@ -112,7 +112,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb,
66 itbl_blk = ext4_inode_table(sb, gdp);
67 for (i = 0; i < sbi->s_itb_per_group; i++) {
68 if (ext4_block_in_group(sb, itbl_blk + i, block_group)) {
69- c = EXT4_B2C(sbi, start - itbl_blk + i);
70+ c = EXT4_B2C(sbi, itbl_blk + i - start);
71 if ((c < num_clusters) || (c == inode_cluster) ||
72 (c == block_cluster) || (c == itbl_cluster))
73 continue;
74--
751.7.9.5
76
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch
new file mode 100644
index 00000000..58597da2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch
@@ -0,0 +1,24 @@
1From 12056d4d781913f38e7d7a05fbf7c1b48a1f7d4d Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Sun, 10 Jun 2012 14:42:13 +0100
4Subject: [PATCH 86/86] Linux 3.2.20
5
6---
7 Makefile | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/Makefile b/Makefile
11index c291184..c7e9cc4 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 19
18+SUBLEVEL = 20
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.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch
new file mode 100644
index 00000000..f55f3ea4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch
@@ -0,0 +1,44 @@
1From 70a948c214a99cc13d1258bee77c13ca8a430c3d Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Mon, 4 Jun 2012 17:05:40 +0100
4Subject: [PATCH 01/67] drm/i915: Mark the ringbuffers as being in the GTT
5 domain
6
7commit 3eef8918ff440837f6af791942d8dd07e1a268ee upstream.
8
9By correctly describing the rinbuffers as being in the GTT domain, it
10appears that we are more careful with the management of the CPU cache
11upon resume and so prevent some coherency issue when submitting commands
12to the GPU later. A secondary effect is that the debug logs are then
13consistent with the actual usage (i.e. they no longer describe the
14ringbuffers as being in the CPU write domain when we are accessing them
15through an wc iomapping.)
16
17Reported-and-tested-by: Daniel Gnoutcheff <daniel@gnoutcheff.name>
18Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41092
19Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
20Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
21[bwh: Backported to 3.2: adjust context]
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++++
25 1 file changed, 4 insertions(+)
26
27diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
28index 62f9ac5..83da6e5 100644
29--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
30+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
31@@ -1045,6 +1045,10 @@ int intel_init_ring_buffer(struct drm_device *dev,
32 if (ret)
33 goto err_unref;
34
35+ ret = i915_gem_object_set_to_gtt_domain(obj, true);
36+ if (ret)
37+ goto err_unpin;
38+
39 ring->map.size = ring->size;
40 ring->map.offset = dev->agp->base + obj->gtt_offset;
41 ring->map.type = 0;
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch
new file mode 100644
index 00000000..14782bd5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch
@@ -0,0 +1,158 @@
1From 56894d493cca01018bd2f3222a8a20b87abc1edd Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Mon, 4 Jun 2012 11:18:15 +0200
4Subject: [PATCH 02/67] drm/i915: hold forcewake around ring hw init
5
6commit b7884eb45ec98c0d34c7f49005ae9d4b4b4e38f6 upstream.
7
8Empirical evidence suggests that we need to: On at least one ivb
9machine when running the hangman i-g-t test, the rings don't properly
10initialize properly - the RING_START registers seems to be stuck at
11all zeros.
12
13Holding forcewake around this register init sequences makes chip reset
14reliable again. Note that this is not the first such issue:
15
16commit f01db988ef6f6c70a6cc36ee71e4a98a68901229
17Author: Sean Paul <seanpaul@chromium.org>
18Date: Fri Mar 16 12:43:22 2012 -0400
19
20 drm/i915: Add wait_for in init_ring_common
21
22added delay loops to make RING_START and RING_CTL initialization
23reliable on the blt ring at boot-up. So I guess it won't hurt if we do
24this unconditionally for all force_wake needing gpus.
25
26To avoid copy&pasting of the HAS_FORCE_WAKE check I've added a new
27intel_info bit for that.
28
29v2: Fixup missing commas in static struct and properly handling the
30error case in init_ring_common, both noticed by Jani Nikula.
31
32Reported-and-tested-by: Yang Guang <guang.a.yang@intel.com>
33Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
34Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50522
35Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
36[bwh: Backported to 3.2:
37 - drop changes to Haswell device information
38 - NEEDS_FORCE_WAKE didn't refer to Valley View anyway]
39Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
40---
41 drivers/gpu/drm/i915/i915_drv.c | 6 +++++-
42 drivers/gpu/drm/i915/i915_drv.h | 3 +++
43 drivers/gpu/drm/i915/intel_ringbuffer.c | 16 +++++++++++++---
44 3 files changed, 21 insertions(+), 4 deletions(-)
45
46diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
47index d0f8830..3a1bfd7 100644
48--- a/drivers/gpu/drm/i915/i915_drv.c
49+++ b/drivers/gpu/drm/i915/i915_drv.c
50@@ -214,6 +214,7 @@ static const struct intel_device_info intel_sandybridge_d_info = {
51 .need_gfx_hws = 1, .has_hotplug = 1,
52 .has_bsd_ring = 1,
53 .has_blt_ring = 1,
54+ .has_force_wake = 1,
55 };
56
57 static const struct intel_device_info intel_sandybridge_m_info = {
58@@ -222,6 +223,7 @@ static const struct intel_device_info intel_sandybridge_m_info = {
59 .has_fbc = 1,
60 .has_bsd_ring = 1,
61 .has_blt_ring = 1,
62+ .has_force_wake = 1,
63 };
64
65 static const struct intel_device_info intel_ivybridge_d_info = {
66@@ -229,6 +231,7 @@ static const struct intel_device_info intel_ivybridge_d_info = {
67 .need_gfx_hws = 1, .has_hotplug = 1,
68 .has_bsd_ring = 1,
69 .has_blt_ring = 1,
70+ .has_force_wake = 1,
71 };
72
73 static const struct intel_device_info intel_ivybridge_m_info = {
74@@ -237,6 +240,7 @@ static const struct intel_device_info intel_ivybridge_m_info = {
75 .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */
76 .has_bsd_ring = 1,
77 .has_blt_ring = 1,
78+ .has_force_wake = 1,
79 };
80
81 static const struct pci_device_id pciidlist[] = { /* aka */
82@@ -939,7 +943,7 @@ MODULE_LICENSE("GPL and additional rights");
83
84 /* We give fast paths for the really cool registers */
85 #define NEEDS_FORCE_WAKE(dev_priv, reg) \
86- (((dev_priv)->info->gen >= 6) && \
87+ ((HAS_FORCE_WAKE((dev_priv)->dev)) && \
88 ((reg) < 0x40000) && \
89 ((reg) != FORCEWAKE) && \
90 ((reg) != ECOBUS))
91diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
92index ae294a0..d62c731 100644
93--- a/drivers/gpu/drm/i915/i915_drv.h
94+++ b/drivers/gpu/drm/i915/i915_drv.h
95@@ -244,6 +244,7 @@ struct intel_device_info {
96 u8 is_broadwater:1;
97 u8 is_crestline:1;
98 u8 is_ivybridge:1;
99+ u8 has_force_wake:1;
100 u8 has_fbc:1;
101 u8 has_pipe_cxsr:1;
102 u8 has_hotplug:1;
103@@ -1001,6 +1002,8 @@ struct drm_i915_file_private {
104 #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT)
105 #define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX)
106
107+#define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake)
108+
109 #include "i915_trace.h"
110
111 extern struct drm_ioctl_desc i915_ioctls[];
112diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
113index 83da6e5..933e66b 100644
114--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
115+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
116@@ -263,10 +263,15 @@ u32 intel_ring_get_active_head(struct intel_ring_buffer *ring)
117
118 static int init_ring_common(struct intel_ring_buffer *ring)
119 {
120- drm_i915_private_t *dev_priv = ring->dev->dev_private;
121+ struct drm_device *dev = ring->dev;
122+ drm_i915_private_t *dev_priv = dev->dev_private;
123 struct drm_i915_gem_object *obj = ring->obj;
124+ int ret = 0;
125 u32 head;
126
127+ if (HAS_FORCE_WAKE(dev))
128+ gen6_gt_force_wake_get(dev_priv);
129+
130 /* Stop the ring if it's running. */
131 I915_WRITE_CTL(ring, 0);
132 I915_WRITE_HEAD(ring, 0);
133@@ -314,7 +319,8 @@ static int init_ring_common(struct intel_ring_buffer *ring)
134 I915_READ_HEAD(ring),
135 I915_READ_TAIL(ring),
136 I915_READ_START(ring));
137- return -EIO;
138+ ret = -EIO;
139+ goto out;
140 }
141
142 if (!drm_core_check_feature(ring->dev, DRIVER_MODESET))
143@@ -325,7 +331,11 @@ static int init_ring_common(struct intel_ring_buffer *ring)
144 ring->space = ring_space(ring);
145 }
146
147- return 0;
148+out:
149+ if (HAS_FORCE_WAKE(dev))
150+ gen6_gt_force_wake_put(dev_priv);
151+
152+ return ret;
153 }
154
155 static int
156--
1571.7.9.5
158
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch
new file mode 100644
index 00000000..95935261
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch
@@ -0,0 +1,166 @@
1From d2d41b738ccb89bf3e5903fdf04bb43a712dd5d3 Mon Sep 17 00:00:00 2001
2From: Chris Wilson <chris@chris-wilson.co.uk>
3Date: Tue, 17 Apr 2012 19:35:53 +0100
4Subject: [PATCH 03/67] drm/i915: Unpin the flip target if we fail to queue
5 the flip
6
7commit 83d4092b0381e5dd6f312b2ec57121dcf0fcbade upstream.
8
9Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
10Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
11Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
12[bwh: Backported to 3.2:
13 - adjust context
14 - we don't have intel_unpin_fb_obj(); use i915_gem_object_unpin()]
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/gpu/drm/i915/intel_display.c | 50 ++++++++++++++++++++++++----------
18 1 file changed, 35 insertions(+), 15 deletions(-)
19
20diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
21index 4720397..1f43ae5 100644
22--- a/drivers/gpu/drm/i915/intel_display.c
23+++ b/drivers/gpu/drm/i915/intel_display.c
24@@ -7009,14 +7009,14 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
25
26 ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
27 if (ret)
28- goto out;
29+ goto err;
30
31 /* Offset into the new buffer for cases of shared fbs between CRTCs */
32 offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8;
33
34 ret = BEGIN_LP_RING(6);
35 if (ret)
36- goto out;
37+ goto err_unpin;
38
39 /* Can't queue multiple flips, so wait for the previous
40 * one to finish before executing the next.
41@@ -7033,7 +7033,11 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
42 OUT_RING(obj->gtt_offset + offset);
43 OUT_RING(MI_NOOP);
44 ADVANCE_LP_RING();
45-out:
46+ return 0;
47+
48+err_unpin:
49+ i915_gem_object_unpin(obj);
50+err:
51 return ret;
52 }
53
54@@ -7050,14 +7054,14 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
55
56 ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
57 if (ret)
58- goto out;
59+ goto err;
60
61 /* Offset into the new buffer for cases of shared fbs between CRTCs */
62 offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8;
63
64 ret = BEGIN_LP_RING(6);
65 if (ret)
66- goto out;
67+ goto err_unpin;
68
69 if (intel_crtc->plane)
70 flip_mask = MI_WAIT_FOR_PLANE_B_FLIP;
71@@ -7072,7 +7076,11 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
72 OUT_RING(MI_NOOP);
73
74 ADVANCE_LP_RING();
75-out:
76+ return 0;
77+
78+err_unpin:
79+ i915_gem_object_unpin(obj);
80+err:
81 return ret;
82 }
83
84@@ -7088,11 +7096,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
85
86 ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
87 if (ret)
88- goto out;
89+ goto err;
90
91 ret = BEGIN_LP_RING(4);
92 if (ret)
93- goto out;
94+ goto err_unpin;
95
96 /* i965+ uses the linear or tiled offsets from the
97 * Display Registers (which do not change across a page-flip)
98@@ -7111,7 +7119,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
99 pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
100 OUT_RING(pf | pipesrc);
101 ADVANCE_LP_RING();
102-out:
103+ return 0;
104+
105+err_unpin:
106+ i915_gem_object_unpin(obj);
107+err:
108 return ret;
109 }
110
111@@ -7127,11 +7139,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
112
113 ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv));
114 if (ret)
115- goto out;
116+ goto err;
117
118 ret = BEGIN_LP_RING(4);
119 if (ret)
120- goto out;
121+ goto err_unpin;
122
123 OUT_RING(MI_DISPLAY_FLIP |
124 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
125@@ -7142,7 +7154,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
126 pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
127 OUT_RING(pf | pipesrc);
128 ADVANCE_LP_RING();
129-out:
130+ return 0;
131+
132+err_unpin:
133+ i915_gem_object_unpin(obj);
134+err:
135 return ret;
136 }
137
138@@ -7164,18 +7180,22 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
139
140 ret = intel_pin_and_fence_fb_obj(dev, obj, ring);
141 if (ret)
142- goto out;
143+ goto err;
144
145 ret = intel_ring_begin(ring, 4);
146 if (ret)
147- goto out;
148+ goto err_unpin;
149
150 intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19));
151 intel_ring_emit(ring, (fb->pitch | obj->tiling_mode));
152 intel_ring_emit(ring, (obj->gtt_offset));
153 intel_ring_emit(ring, (MI_NOOP));
154 intel_ring_advance(ring);
155-out:
156+ return 0;
157+
158+err_unpin:
159+ i915_gem_object_unpin(obj);
160+err:
161 return ret;
162 }
163
164--
1651.7.9.5
166
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch
new file mode 100644
index 00000000..33031c77
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch
@@ -0,0 +1,93 @@
1From e76a063bd6b6038a0fd3ab502ae6f14ebc145944 Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Wed, 23 May 2012 14:02:00 +0200
4Subject: [PATCH 04/67] drm/i915: fix up ivb plane 3 pageflips
5
6commit cb05d8dedefa3066bf5d74ef88c6ca6cf4bd1c87 upstream.
7
8Or at least plug another gapping hole. Apparrently hw desingers only
9moved the bit field, but did not bother ot re-enumerate the planes
10when adding support for a 3rd pipe.
11
12Discovered by i-g-t/flip_test.
13
14This may or may not fix the reference bugzilla, because that one
15smells like we have still larger fish to fry.
16
17v2: Fixup the impossible case to catch programming errors, noticed by
18Chris Wilson.
19
20References: https://bugs.freedesktop.org/show_bug.cgi?id=50069
21Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
22Tested-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
23Eugeni Dodonov <eugeni.dodonov@intel.com>
24Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
25[bwh: Backported to 3.2: adjust context]
26Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
27---
28 drivers/gpu/drm/i915/i915_reg.h | 8 ++++++++
29 drivers/gpu/drm/i915/intel_display.c | 19 ++++++++++++++++++-
30 2 files changed, 26 insertions(+), 1 deletion(-)
31
32diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
33index 06ec1e5..fd53122 100644
34--- a/drivers/gpu/drm/i915/i915_reg.h
35+++ b/drivers/gpu/drm/i915/i915_reg.h
36@@ -164,6 +164,14 @@
37 #define MI_DISPLAY_FLIP MI_INSTR(0x14, 2)
38 #define MI_DISPLAY_FLIP_I915 MI_INSTR(0x14, 1)
39 #define MI_DISPLAY_FLIP_PLANE(n) ((n) << 20)
40+/* IVB has funny definitions for which plane to flip. */
41+#define MI_DISPLAY_FLIP_IVB_PLANE_A (0 << 19)
42+#define MI_DISPLAY_FLIP_IVB_PLANE_B (1 << 19)
43+#define MI_DISPLAY_FLIP_IVB_SPRITE_A (2 << 19)
44+#define MI_DISPLAY_FLIP_IVB_SPRITE_B (3 << 19)
45+#define MI_DISPLAY_FLIP_IVB_PLANE_C (4 << 19)
46+#define MI_DISPLAY_FLIP_IVB_SPRITE_C (5 << 19)
47+
48 #define MI_SET_CONTEXT MI_INSTR(0x18, 0)
49 #define MI_MM_SPACE_GTT (1<<8)
50 #define MI_MM_SPACE_PHYSICAL (0<<8)
51diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
52index 1f43ae5..5c1cdb8 100644
53--- a/drivers/gpu/drm/i915/intel_display.c
54+++ b/drivers/gpu/drm/i915/intel_display.c
55@@ -7176,17 +7176,34 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
56 struct drm_i915_private *dev_priv = dev->dev_private;
57 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
58 struct intel_ring_buffer *ring = &dev_priv->ring[BCS];
59+ uint32_t plane_bit = 0;
60 int ret;
61
62 ret = intel_pin_and_fence_fb_obj(dev, obj, ring);
63 if (ret)
64 goto err;
65
66+ switch(intel_crtc->plane) {
67+ case PLANE_A:
68+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_A;
69+ break;
70+ case PLANE_B:
71+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_B;
72+ break;
73+ case PLANE_C:
74+ plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_C;
75+ break;
76+ default:
77+ WARN_ONCE(1, "unknown plane in flip command\n");
78+ ret = -ENODEV;
79+ goto err;
80+ }
81+
82 ret = intel_ring_begin(ring, 4);
83 if (ret)
84 goto err_unpin;
85
86- intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19));
87+ intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit);
88 intel_ring_emit(ring, (fb->pitch | obj->tiling_mode));
89 intel_ring_emit(ring, (obj->gtt_offset));
90 intel_ring_emit(ring, (MI_NOOP));
91--
921.7.9.5
93
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch
new file mode 100644
index 00000000..8b303d2e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch
@@ -0,0 +1,46 @@
1From afd5d9b3973b65b15dd6c48f3f403c4809f71b66 Mon Sep 17 00:00:00 2001
2From: Eugeni Dodonov <eugeni.dodonov@intel.com>
3Date: Wed, 6 Jun 2012 11:59:06 -0300
4Subject: [PATCH 05/67] char/agp: add another Ironlake host bridge
5
6commit 67384fe3fd450536342330f684ea1f7dcaef8130 upstream.
7
8This seems to come on Gigabyte H55M-S2V and was discovered through the
9https://bugs.freedesktop.org/show_bug.cgi?id=50381 debugging.
10
11Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50381
12Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
13Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/char/agp/intel-agp.c | 1 +
17 drivers/char/agp/intel-agp.h | 1 +
18 2 files changed, 2 insertions(+)
19
20diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
21index b427711..58b49d1 100644
22--- a/drivers/char/agp/intel-agp.c
23+++ b/drivers/char/agp/intel-agp.c
24@@ -897,6 +897,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
25 ID(PCI_DEVICE_ID_INTEL_B43_HB),
26 ID(PCI_DEVICE_ID_INTEL_B43_1_HB),
27 ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB),
28+ ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB),
29 ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB),
30 ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB),
31 ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB),
32diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h
33index 5da67f1..6f24604 100644
34--- a/drivers/char/agp/intel-agp.h
35+++ b/drivers/char/agp/intel-agp.h
36@@ -211,6 +211,7 @@
37 #define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30
38 #define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32
39 #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB 0x0040
40+#define PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB 0x0069
41 #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG 0x0042
42 #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB 0x0044
43 #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch
new file mode 100644
index 00000000..26dc10f8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch
@@ -0,0 +1,53 @@
1From ccfbdd3321d88685a0c3a2f69838a7a4706e32ef Mon Sep 17 00:00:00 2001
2From: Cliff Wickman <cpw@sgi.com>
3Date: Thu, 7 Jun 2012 08:31:40 -0500
4Subject: [PATCH 06/67] x86/uv: Fix UV2 BAU legacy mode
5
6commit d5d2d2eea84b0d8450b082edbc3dbde41fb8bfd8 upstream.
7
8The SGI Altix UV2 BAU (Broadcast Assist Unit) as used for
9tlb-shootdown (selective broadcast mode) always uses UV2
10broadcast descriptor format. There is no need to clear the
11'legacy' (UV1) mode, because the hardware always uses UV2 mode
12for selective broadcast.
13
14But the BIOS uses general broadcast and legacy mode, and the
15hardware pays attention to the legacy mode bit for general
16broadcast. So the kernel must not clear that mode bit.
17
18Signed-off-by: Cliff Wickman <cpw@sgi.com>
19Link: http://lkml.kernel.org/r/E1SccoO-0002Lh-Cb@eag09.americas.sgi.com
20Signed-off-by: Ingo Molnar <mingo@kernel.org>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22---
23 arch/x86/include/asm/uv/uv_bau.h | 1 -
24 arch/x86/platform/uv/tlb_uv.c | 1 -
25 2 files changed, 2 deletions(-)
26
27diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
28index 1b82f7e..679229f 100644
29--- a/arch/x86/include/asm/uv/uv_bau.h
30+++ b/arch/x86/include/asm/uv/uv_bau.h
31@@ -149,7 +149,6 @@
32 /* 4 bits of software ack period */
33 #define UV2_ACK_MASK 0x7UL
34 #define UV2_ACK_UNITS_SHFT 3
35-#define UV2_LEG_SHFT UV2H_LB_BAU_MISC_CONTROL_USE_LEGACY_DESCRIPTOR_FORMATS_SHFT
36 #define UV2_EXT_SHFT UV2H_LB_BAU_MISC_CONTROL_ENABLE_EXTENDED_SB_STATUS_SHFT
37
38 /*
39diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
40index 81aee5a..29a69550 100644
41--- a/arch/x86/platform/uv/tlb_uv.c
42+++ b/arch/x86/platform/uv/tlb_uv.c
43@@ -1304,7 +1304,6 @@ static void __init enable_timeouts(void)
44 */
45 mmr_image |= (1L << SOFTACK_MSHIFT);
46 if (is_uv2_hub()) {
47- mmr_image &= ~(1L << UV2_LEG_SHFT);
48 mmr_image |= (1L << UV2_EXT_SHFT);
49 }
50 write_mmr_misc_control(pnode, mmr_image);
51--
521.7.9.5
53
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch
new file mode 100644
index 00000000..3076ce9b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch
@@ -0,0 +1,70 @@
1From 5c6f8c50fe40cec7015a6bfa9762bf76d52211d6 Mon Sep 17 00:00:00 2001
2From: Steffen Rumler <steffen.rumler.ext@nsn.com>
3Date: Wed, 6 Jun 2012 16:37:17 +0200
4Subject: [PATCH 07/67] powerpc: Fix kernel panic during kernel module load
5
6commit 3c75296562f43e6fbc6cddd3de948a7b3e4e9bcf upstream.
7
8This fixes a problem which can causes kernel oopses while loading
9a kernel module.
10
11According to the PowerPC EABI specification, GPR r11 is assigned
12the dedicated function to point to the previous stack frame.
13In the powerpc-specific kernel module loader, do_plt_call()
14(in arch/powerpc/kernel/module_32.c), GPR r11 is also used
15to generate trampoline code.
16
17This combination crashes the kernel, in the case where the compiler
18chooses to use a helper function for saving GPRs on entry, and the
19module loader has placed the .init.text section far away from the
20.text section, meaning that it has to generate a trampoline for
21functions in the .init.text section to call the GPR save helper.
22Because the trampoline trashes r11, references to the stack frame
23using r11 can cause an oops.
24
25The fix just uses GPR r12 instead of GPR r11 for generating the
26trampoline code. According to the statements from Freescale, this is
27safe from an EABI perspective.
28
29I've tested the fix for kernel 2.6.33 on MPC8541.
30
31Signed-off-by: Steffen Rumler <steffen.rumler.ext@nsn.com>
32[paulus@samba.org: reworded the description]
33Signed-off-by: Paul Mackerras <paulus@samba.org>
34Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
35---
36 arch/powerpc/kernel/module_32.c | 11 +++++------
37 1 file changed, 5 insertions(+), 6 deletions(-)
38
39diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
40index 0b6d796..2e3200c 100644
41--- a/arch/powerpc/kernel/module_32.c
42+++ b/arch/powerpc/kernel/module_32.c
43@@ -176,8 +176,8 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr,
44
45 static inline int entry_matches(struct ppc_plt_entry *entry, Elf32_Addr val)
46 {
47- if (entry->jump[0] == 0x3d600000 + ((val + 0x8000) >> 16)
48- && entry->jump[1] == 0x396b0000 + (val & 0xffff))
49+ if (entry->jump[0] == 0x3d800000 + ((val + 0x8000) >> 16)
50+ && entry->jump[1] == 0x398c0000 + (val & 0xffff))
51 return 1;
52 return 0;
53 }
54@@ -204,10 +204,9 @@ static uint32_t do_plt_call(void *location,
55 entry++;
56 }
57
58- /* Stolen from Paul Mackerras as well... */
59- entry->jump[0] = 0x3d600000+((val+0x8000)>>16); /* lis r11,sym@ha */
60- entry->jump[1] = 0x396b0000 + (val&0xffff); /* addi r11,r11,sym@l*/
61- entry->jump[2] = 0x7d6903a6; /* mtctr r11 */
62+ entry->jump[0] = 0x3d800000+((val+0x8000)>>16); /* lis r12,sym@ha */
63+ entry->jump[1] = 0x398c0000 + (val&0xffff); /* addi r12,r12,sym@l*/
64+ entry->jump[2] = 0x7d8903a6; /* mtctr r12 */
65 entry->jump[3] = 0x4e800420; /* bctr */
66
67 DEBUGP("Initialized plt for 0x%x at %p\n", val, entry);
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch
new file mode 100644
index 00000000..4b3559b7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch
@@ -0,0 +1,81 @@
1From ac9d749e3f0fcf7e8ce73cf00cf3a7d91debdc89 Mon Sep 17 00:00:00 2001
2From: Ben Skeggs <bskeggs@redhat.com>
3Date: Mon, 17 Oct 2011 10:24:49 +1000
4Subject: [PATCH 08/67] drm/nouveau: determine a value for display_info.bpc if
5 edid doesn't
6
7commit 6322175530c89ab719cea28202f96a3660491727 upstream.
8
9Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
10Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
11---
12 drivers/gpu/drm/nouveau/nouveau_connector.c | 46 +++++++++++++++++++++++++++
13 1 file changed, 46 insertions(+)
14
15diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
16index cea6696..e2c50d8 100644
17--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
18+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
19@@ -602,6 +602,46 @@ nouveau_connector_scaler_modes_add(struct drm_connector *connector)
20 return modes;
21 }
22
23+static void
24+nouveau_connector_detect_depth(struct drm_connector *connector)
25+{
26+ struct drm_nouveau_private *dev_priv = connector->dev->dev_private;
27+ struct nouveau_connector *nv_connector = nouveau_connector(connector);
28+ struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
29+ struct nvbios *bios = &dev_priv->vbios;
30+ struct drm_display_mode *mode = nv_connector->native_mode;
31+ bool duallink;
32+
33+ /* if the edid is feeling nice enough to provide this info, use it */
34+ if (nv_connector->edid && connector->display_info.bpc)
35+ return;
36+
37+ /* if not, we're out of options unless we're LVDS, default to 6bpc */
38+ connector->display_info.bpc = 6;
39+ if (nv_encoder->dcb->type != OUTPUT_LVDS)
40+ return;
41+
42+ /* LVDS: panel straps */
43+ if (bios->fp_no_ddc) {
44+ if (bios->fp.if_is_24bit)
45+ connector->display_info.bpc = 8;
46+ return;
47+ }
48+
49+ /* LVDS: DDC panel, need to first determine the number of links to
50+ * know which if_is_24bit flag to check...
51+ */
52+ if (nv_connector->edid &&
53+ nv_connector->dcb->type == DCB_CONNECTOR_LVDS_SPWG)
54+ duallink = ((u8 *)nv_connector->edid)[121] == 2;
55+ else
56+ duallink = mode->clock >= bios->fp.duallink_transition_clk;
57+
58+ if ((!duallink && (bios->fp.strapless_is_24bit & 1)) ||
59+ ( duallink && (bios->fp.strapless_is_24bit & 2)))
60+ connector->display_info.bpc = 8;
61+}
62+
63 static int
64 nouveau_connector_get_modes(struct drm_connector *connector)
65 {
66@@ -646,6 +686,12 @@ nouveau_connector_get_modes(struct drm_connector *connector)
67 ret = 1;
68 }
69
70+ /* Attempt to determine display colour depth, this has to happen after
71+ * we've determined the "native" mode for LVDS, as the VBIOS tables
72+ * require us to compare against a pixel clock in some cases..
73+ */
74+ nouveau_connector_detect_depth(connector);
75+
76 if (nv_encoder->dcb->type == OUTPUT_TV)
77 ret = get_slave_funcs(encoder)->get_modes(encoder, connector);
78
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch
new file mode 100644
index 00000000..eeb07d11
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch
@@ -0,0 +1,42 @@
1From 672b73575b5fb47166e255cc9a374b858d5f59da Mon Sep 17 00:00:00 2001
2From: Ben Skeggs <bskeggs@redhat.com>
3Date: Sat, 24 Mar 2012 16:26:13 +1000
4Subject: [PATCH 09/67] drm/nouveau: default to 8bpc for non-LVDS panels if
5 EDID isn't useful
6
7commit c8435362f2211086b34ce871fa9c3fcc7ca79ff9 upstream.
8
9A few reports of bad behaviour since the autodetection defaulted to 6bpc,
10lets fix this.
11
12Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13Signed-off-by: Dave Airlie <airlied@redhat.com>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/gpu/drm/nouveau/nouveau_connector.c | 9 ++++++---
17 1 file changed, 6 insertions(+), 3 deletions(-)
18
19diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
20index e2c50d8..eeaa8ca 100644
21--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
22+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
23@@ -616,10 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector)
24 if (nv_connector->edid && connector->display_info.bpc)
25 return;
26
27- /* if not, we're out of options unless we're LVDS, default to 6bpc */
28- connector->display_info.bpc = 6;
29- if (nv_encoder->dcb->type != OUTPUT_LVDS)
30+ /* if not, we're out of options unless we're LVDS, default to 8bpc */
31+ if (nv_encoder->dcb->type != OUTPUT_LVDS) {
32+ connector->display_info.bpc = 8;
33 return;
34+ }
35+
36+ connector->display_info.bpc = 6;
37
38 /* LVDS: panel straps */
39 if (bios->fp_no_ddc) {
40--
411.7.9.5
42
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch
new file mode 100644
index 00000000..f9a20411
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch
@@ -0,0 +1,38 @@
1From 1c16b668a8c284025dc8c639a1b760eccaed3864 Mon Sep 17 00:00:00 2001
2From: Ben Skeggs <bskeggs@redhat.com>
3Date: Sat, 5 May 2012 00:39:21 +1000
4Subject: [PATCH 10/67] drm/nouveau/disp: fix dithering not being enabled on
5 some eDP macbooks
6
7commit a6a17859f1bdf607650ee055101f54c5f207762b upstream.
8
9Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
10[Maarten Lankhorst backported to 3.2,
11 changing nv_connector->type to nv_connector->dcb->type]
12Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
13---
14 drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +++++++-
15 1 file changed, 7 insertions(+), 1 deletion(-)
16
17diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
18index eeaa8ca..1e72db5 100644
19--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
20+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
21@@ -616,7 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector)
22 if (nv_connector->edid && connector->display_info.bpc)
23 return;
24
25- /* if not, we're out of options unless we're LVDS, default to 8bpc */
26+ /* EDID 1.4 is *supposed* to be supported on eDP, but, Apple... */
27+ if (nv_connector->dcb->type == DCB_CONNECTOR_eDP) {
28+ connector->display_info.bpc = 6;
29+ return;
30+ }
31+
32+ /* we're out of options unless we're LVDS, default to 8bpc */
33 if (nv_encoder->dcb->type != OUTPUT_LVDS) {
34 connector->display_info.bpc = 8;
35 return;
36--
371.7.9.5
38
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch
new file mode 100644
index 00000000..041098ac
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch
@@ -0,0 +1,103 @@
1From 16bebb9a3715d7d06a3bcc4b4ec1c1209251d494 Mon Sep 17 00:00:00 2001
2From: Pavel Shilovsky <piastry@etersoft.ru>
3Date: Thu, 10 May 2012 19:49:38 +0400
4Subject: [PATCH 11/67] fuse: fix stat call on 32 bit platforms
5
6commit 45c72cd73c788dd18c8113d4a404d6b4a01decf1 upstream.
7
8Now we store attr->ino at inode->i_ino, return attr->ino at the
9first time and then return inode->i_ino if the attribute timeout
10isn't expired. That's wrong on 32 bit platforms because attr->ino
11is 64 bit and inode->i_ino is 32 bit in this case.
12
13Fix this by saving 64 bit ino in fuse_inode structure and returning
14it every time we call getattr. Also squash attr->ino into inode->i_ino
15explicitly.
16
17Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
18Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
19Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
20---
21 fs/fuse/dir.c | 1 +
22 fs/fuse/fuse_i.h | 3 +++
23 fs/fuse/inode.c | 17 ++++++++++++++++-
24 3 files changed, 20 insertions(+), 1 deletion(-)
25
26diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
27index 9f63e49..5ef7afb 100644
28--- a/fs/fuse/dir.c
29+++ b/fs/fuse/dir.c
30@@ -858,6 +858,7 @@ int fuse_update_attributes(struct inode *inode, struct kstat *stat,
31 if (stat) {
32 generic_fillattr(inode, stat);
33 stat->mode = fi->orig_i_mode;
34+ stat->ino = fi->orig_ino;
35 }
36 }
37
38diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
39index cf6db0a..89c4a58 100644
40--- a/fs/fuse/fuse_i.h
41+++ b/fs/fuse/fuse_i.h
42@@ -82,6 +82,9 @@ struct fuse_inode {
43 preserve the original mode */
44 mode_t orig_i_mode;
45
46+ /** 64 bit inode number */
47+ u64 orig_ino;
48+
49 /** Version of last attribute change */
50 u64 attr_version;
51
52diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
53index aa83109..1f82d95 100644
54--- a/fs/fuse/inode.c
55+++ b/fs/fuse/inode.c
56@@ -91,6 +91,7 @@ static struct inode *fuse_alloc_inode(struct super_block *sb)
57 fi->nlookup = 0;
58 fi->attr_version = 0;
59 fi->writectr = 0;
60+ fi->orig_ino = 0;
61 INIT_LIST_HEAD(&fi->write_files);
62 INIT_LIST_HEAD(&fi->queued_writes);
63 INIT_LIST_HEAD(&fi->writepages);
64@@ -140,6 +141,18 @@ static int fuse_remount_fs(struct super_block *sb, int *flags, char *data)
65 return 0;
66 }
67
68+/*
69+ * ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down
70+ * so that it will fit.
71+ */
72+static ino_t fuse_squash_ino(u64 ino64)
73+{
74+ ino_t ino = (ino_t) ino64;
75+ if (sizeof(ino_t) < sizeof(u64))
76+ ino ^= ino64 >> (sizeof(u64) - sizeof(ino_t)) * 8;
77+ return ino;
78+}
79+
80 void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
81 u64 attr_valid)
82 {
83@@ -149,7 +162,7 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
84 fi->attr_version = ++fc->attr_version;
85 fi->i_time = attr_valid;
86
87- inode->i_ino = attr->ino;
88+ inode->i_ino = fuse_squash_ino(attr->ino);
89 inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
90 set_nlink(inode, attr->nlink);
91 inode->i_uid = attr->uid;
92@@ -175,6 +188,8 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
93 fi->orig_i_mode = inode->i_mode;
94 if (!(fc->flags & FUSE_DEFAULT_PERMISSIONS))
95 inode->i_mode &= ~S_ISVTX;
96+
97+ fi->orig_ino = attr->ino;
98 }
99
100 void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
101--
1021.7.9.5
103
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch
new file mode 100644
index 00000000..29c63183
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch
@@ -0,0 +1,146 @@
1From 558e69f643c0c8492df4bb6898cbf3caf3e1e160 Mon Sep 17 00:00:00 2001
2From: Borislav Petkov <borislav.petkov@amd.com>
3Date: Sun, 10 Jun 2012 00:50:15 +0900
4Subject: [PATCH 12/67] x86, MCE, AMD: Make APIC LVT thresholding interrupt
5 optional
6
7commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream.
8
9Currently, the APIC LVT interrupt for error thresholding is implicitly
10enabled. However, there are models in the F15h range which do not enable
11it. Make the code machinery which sets up the APIC interrupt support
12an optional setting and add an ->interrupt_capable member to the bank
13representation mirroring that capability and enable the interrupt offset
14programming only if it is true.
15
16Simplify code and fixup comment style while at it.
17
18This patch is for stable kernels v3.0 to v3.2.
19
20Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
21Signed-off-by: Robert Richter <robert.richter@amd.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 arch/x86/kernel/cpu/mcheck/mce_amd.c | 55 +++++++++++++++++++++++++++-------
25 1 file changed, 44 insertions(+), 11 deletions(-)
26
27diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
28index f547421..445a61c 100644
29--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
30+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
31@@ -52,6 +52,7 @@ struct threshold_block {
32 unsigned int cpu;
33 u32 address;
34 u16 interrupt_enable;
35+ bool interrupt_capable;
36 u16 threshold_limit;
37 struct kobject kobj;
38 struct list_head miscj;
39@@ -86,6 +87,21 @@ struct thresh_restart {
40 u16 old_limit;
41 };
42
43+static bool lvt_interrupt_supported(unsigned int bank, u32 msr_high_bits)
44+{
45+ /*
46+ * bank 4 supports APIC LVT interrupts implicitly since forever.
47+ */
48+ if (bank == 4)
49+ return true;
50+
51+ /*
52+ * IntP: interrupt present; if this bit is set, the thresholding
53+ * bank can generate APIC LVT interrupts
54+ */
55+ return msr_high_bits & BIT(28);
56+}
57+
58 static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi)
59 {
60 int msr = (hi & MASK_LVTOFF_HI) >> 20;
61@@ -107,8 +123,10 @@ static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi)
62 return 1;
63 };
64
65-/* must be called with correct cpu affinity */
66-/* Called via smp_call_function_single() */
67+/*
68+ * Called via smp_call_function_single(), must be called with correct
69+ * cpu affinity.
70+ */
71 static void threshold_restart_bank(void *_tr)
72 {
73 struct thresh_restart *tr = _tr;
74@@ -131,6 +149,12 @@ static void threshold_restart_bank(void *_tr)
75 (new_count & THRESHOLD_MAX);
76 }
77
78+ /* clear IntType */
79+ hi &= ~MASK_INT_TYPE_HI;
80+
81+ if (!tr->b->interrupt_capable)
82+ goto done;
83+
84 if (tr->set_lvt_off) {
85 if (lvt_off_valid(tr->b, tr->lvt_off, lo, hi)) {
86 /* set new lvt offset */
87@@ -139,9 +163,10 @@ static void threshold_restart_bank(void *_tr)
88 }
89 }
90
91- tr->b->interrupt_enable ?
92- (hi = (hi & ~MASK_INT_TYPE_HI) | INT_TYPE_APIC) :
93- (hi &= ~MASK_INT_TYPE_HI);
94+ if (tr->b->interrupt_enable)
95+ hi |= INT_TYPE_APIC;
96+
97+ done:
98
99 hi |= MASK_COUNT_EN_HI;
100 wrmsr(tr->b->address, lo, hi);
101@@ -206,14 +231,18 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c)
102 if (shared_bank[bank] && c->cpu_core_id)
103 break;
104 #endif
105- offset = setup_APIC_mce(offset,
106- (high & MASK_LVTOFF_HI) >> 20);
107
108 memset(&b, 0, sizeof(b));
109- b.cpu = cpu;
110- b.bank = bank;
111- b.block = block;
112- b.address = address;
113+ b.cpu = cpu;
114+ b.bank = bank;
115+ b.block = block;
116+ b.address = address;
117+ b.interrupt_capable = lvt_interrupt_supported(bank, high);
118+
119+ if (b.interrupt_capable) {
120+ int new = (high & MASK_LVTOFF_HI) >> 20;
121+ offset = setup_APIC_mce(offset, new);
122+ }
123
124 mce_threshold_block_init(&b, offset);
125 mce_threshold_vector = amd_threshold_interrupt;
126@@ -313,6 +342,9 @@ store_interrupt_enable(struct threshold_block *b, const char *buf, size_t size)
127 struct thresh_restart tr;
128 unsigned long new;
129
130+ if (!b->interrupt_capable)
131+ return -EINVAL;
132+
133 if (strict_strtoul(buf, 0, &new) < 0)
134 return -EINVAL;
135
136@@ -471,6 +503,7 @@ static __cpuinit int allocate_threshold_blocks(unsigned int cpu,
137 b->cpu = cpu;
138 b->address = address;
139 b->interrupt_enable = 0;
140+ b->interrupt_capable = lvt_interrupt_supported(bank, high);
141 b->threshold_limit = THRESHOLD_MAX;
142
143 INIT_LIST_HEAD(&b->miscj);
144--
1451.7.9.5
146
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch
new file mode 100644
index 00000000..e453609e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch
@@ -0,0 +1,60 @@
1From ab8b86f7a27c50219b82e9dfc92a21d8715403bf Mon Sep 17 00:00:00 2001
2From: Andreas Herrmann <andreas.herrmann3@amd.com>
3Date: Tue, 3 Apr 2012 12:13:07 +0200
4Subject: [PATCH 13/67] x86/amd: Re-enable CPU topology extensions in case
5 BIOS has disabled it
6
7BIOS will switch off the corresponding feature flag on family
815h models 10h-1fh non-desktop CPUs.
9
10The topology extension CPUID leafs are required to detect which
11cores belong to the same compute unit. (thread siblings mask is
12set accordingly and also correct information about L1i and L2
13cache sharing depends on this).
14
15W/o this patch we wouldn't see which cores belong to the same
16compute unit and also cache sharing information for L1i and L2
17would be incorrect on such systems.
18
19Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
20Signed-off-by: Ingo Molnar <mingo@kernel.org>
21(cherry picked from commit f7f286a910221ae18b21c18d9d0f4cd88965829f)
22
23Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++
27 1 file changed, 18 insertions(+)
28
29diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
30index 0bab2b1..3524e1f 100644
31--- a/arch/x86/kernel/cpu/amd.c
32+++ b/arch/x86/kernel/cpu/amd.c
33@@ -571,6 +571,24 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
34 }
35 }
36
37+ /* re-enable TopologyExtensions if switched off by BIOS */
38+ if ((c->x86 == 0x15) &&
39+ (c->x86_model >= 0x10) && (c->x86_model <= 0x1f) &&
40+ !cpu_has(c, X86_FEATURE_TOPOEXT)) {
41+ u64 val;
42+
43+ if (!rdmsrl_amd_safe(0xc0011005, &val)) {
44+ val |= 1ULL << 54;
45+ wrmsrl_amd_safe(0xc0011005, val);
46+ rdmsrl(0xc0011005, val);
47+ if (val & (1ULL << 54)) {
48+ set_cpu_cap(c, X86_FEATURE_TOPOEXT);
49+ printk(KERN_INFO FW_INFO "CPU: Re-enabling "
50+ "disabled Topology Extensions Support\n");
51+ }
52+ }
53+ }
54+
55 cpu_detect_cache_sizes(c);
56
57 /* Multi core CPU? */
58--
591.7.9.5
60
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch
new file mode 100644
index 00000000..cf74ee5f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch
@@ -0,0 +1,56 @@
1From e88182a80fd1abfed0a667c28fd70632c728b9b0 Mon Sep 17 00:00:00 2001
2From: Andre Przywara <andre.przywara@amd.com>
3Date: Fri, 23 Mar 2012 10:02:17 +0100
4Subject: [PATCH 14/67] hwmon: (fam15h_power) Increase output resolution
5
6On high CPU load the accumulating values in the running_avg_cap
7register are very low (below 10), so averaging them too early leads
8to unnecessary poor output resolution. Since we pretend to output
9micro-Watt we better keep all the bits we have as long as possible.
10
11Signed-off-by: Andre Przywara <andre.przywara@amd.com>
12Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
13Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
14Signed-off-by: Jean Delvare <khali@linux-fr.org>
15(cherry picked from commit 941a956b0e387b21f385f486c34ef67576775cfc)
16
17Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/hwmon/fam15h_power.c | 8 ++++----
21 1 file changed, 4 insertions(+), 4 deletions(-)
22
23diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
24index 9a4c3ab..e8e18ca 100644
25--- a/drivers/hwmon/fam15h_power.c
26+++ b/drivers/hwmon/fam15h_power.c
27@@ -61,14 +61,14 @@ static ssize_t show_power(struct device *dev,
28 REG_TDP_RUNNING_AVERAGE, &val);
29 running_avg_capture = (val >> 4) & 0x3fffff;
30 running_avg_capture = sign_extend32(running_avg_capture, 21);
31- running_avg_range = val & 0xf;
32+ running_avg_range = (val & 0xf) + 1;
33
34 pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
35 REG_TDP_LIMIT3, &val);
36
37 tdp_limit = val >> 16;
38- curr_pwr_watts = tdp_limit + data->base_tdp -
39- (s32)(running_avg_capture >> (running_avg_range + 1));
40+ curr_pwr_watts = (tdp_limit + data->base_tdp) << running_avg_range;
41+ curr_pwr_watts -= running_avg_capture;
42 curr_pwr_watts *= data->tdp_to_watts;
43
44 /*
45@@ -78,7 +78,7 @@ static ssize_t show_power(struct device *dev,
46 * scaling factor 1/(2^16). For conversion we use
47 * (10^6)/(2^16) = 15625/(2^10)
48 */
49- curr_pwr_watts = (curr_pwr_watts * 15625) >> 10;
50+ curr_pwr_watts = (curr_pwr_watts * 15625) >> (10 + running_avg_range);
51 return sprintf(buf, "%u\n", (unsigned int) curr_pwr_watts);
52 }
53 static DEVICE_ATTR(power1_input, S_IRUGO, show_power, NULL);
54--
551.7.9.5
56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch
new file mode 100644
index 00000000..ea7a120f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch
@@ -0,0 +1,65 @@
1From 701bbc54cf5b05f981bd595a0662317d4d7576fc Mon Sep 17 00:00:00 2001
2From: Dimitri Sivanich <sivanich@sgi.com>
3Date: Tue, 5 Jun 2012 13:44:36 -0500
4Subject: [PATCH 15/67] sched: Fix the relax_domain_level boot parameter
5
6commit a841f8cef4bb124f0f5563314d0beaf2e1249d72 upstream.
7
8It does not get processed because sched_domain_level_max is 0 at the
9time that setup_relax_domain_level() is run.
10
11Simply accept the value as it is, as we don't know the value of
12sched_domain_level_max until sched domain construction is completed.
13
14Fix sched_relax_domain_level in cpuset. The build_sched_domain() routine calls
15the set_domain_attribute() routine prior to setting the sd->level, however,
16the set_domain_attribute() routine relies on the sd->level to decide whether
17idle load balancing will be off/on.
18
19Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
20Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
21Link: http://lkml.kernel.org/r/20120605184436.GA15668@sgi.com
22Signed-off-by: Ingo Molnar <mingo@kernel.org>
23[bwh: Backported to 3.2: adjust the filename]
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25---
26 kernel/sched.c | 9 +++------
27 1 file changed, 3 insertions(+), 6 deletions(-)
28
29diff --git a/kernel/sched.c b/kernel/sched.c
30index 299f55c..576a27f 100644
31--- a/kernel/sched.c
32+++ b/kernel/sched.c
33@@ -7429,11 +7429,8 @@ int sched_domain_level_max;
34
35 static int __init setup_relax_domain_level(char *str)
36 {
37- unsigned long val;
38-
39- val = simple_strtoul(str, NULL, 0);
40- if (val < sched_domain_level_max)
41- default_relax_domain_level = val;
42+ if (kstrtoint(str, 0, &default_relax_domain_level))
43+ pr_warn("Unable to set relax_domain_level\n");
44
45 return 1;
46 }
47@@ -7636,7 +7633,6 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
48 if (!sd)
49 return child;
50
51- set_domain_attribute(sd, attr);
52 cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
53 if (child) {
54 sd->level = child->level + 1;
55@@ -7644,6 +7640,7 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
56 child->parent = sd;
57 }
58 sd->child = child;
59+ set_domain_attribute(sd, attr);
60
61 return sd;
62 }
63--
641.7.9.5
65
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch
new file mode 100644
index 00000000..01d143e2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch
@@ -0,0 +1,47 @@
1From 9dfeca7b52fe58b2a49b59834a976405a424b622 Mon Sep 17 00:00:00 2001
2From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3Date: Wed, 6 Jun 2012 09:13:36 +0200
4Subject: [PATCH 16/67] iwlwifi: don't mess up the SCD when removing a key
5
6commit d6ee27eb13beab94056e0de52d81220058ca2297 upstream.
7
8When we remove a key, we put a key index which was supposed
9to tell the fw that we are actually removing the key. But
10instead the fw took that index as a valid index and messed
11up the SRAM of the device.
12
13This memory corruption on the device mangled the data of
14the SCD. The impact on the user is that SCD queue 2 got
15stuck after having removed keys.
16The message is the log that was printed is:
17
18Queue 2 stuck for 10000ms
19
20This doesn't seem to fix the higher queues that get stuck
21from time to time.
22
23Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
24Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
25Signed-off-by: Johannes Berg <johannes.berg@intel.com>
26Signed-off-by: John W. Linville <linville@tuxdriver.com>
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28---
29 drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 2 +-
30 1 file changed, 1 insertion(+), 1 deletion(-)
31
32diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
33index 5cfb3d1..ccf1524 100644
34--- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
35+++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
36@@ -1245,7 +1245,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
37 key_flags |= STA_KEY_MULTICAST_MSK;
38
39 sta_cmd.key.key_flags = key_flags;
40- sta_cmd.key.key_offset = WEP_INVALID_OFFSET;
41+ sta_cmd.key.key_offset = keyconf->hw_key_idx;
42 sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK;
43 sta_cmd.mode = STA_CONTROL_MODIFY_MSK;
44
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch
new file mode 100644
index 00000000..24e1bed4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch
@@ -0,0 +1,85 @@
1From 1468193368592ea5ed063093a7f776a19af2a131 Mon Sep 17 00:00:00 2001
2From: Peter Korsgaard <jacmet@sunsite.dk>
3Date: Thu, 31 May 2012 20:53:08 +1000
4Subject: [PATCH 17/67] hwrng: atmel-rng - fix race condition leading to
5 repeated bits
6
7commit 121daad8fd1dce63076fa55aaedd5dc3f981b334 upstream.
8
9Data valid gets cleared by reading the ISR (status register) and NOT from
10reading ODATA (data register). A new data word can become available between
11checking ISR and reading ODATA, causing us to reuse the same data word next
12time atmel_trng_read() gets called, if that happens before the following
13data word is ready.
14
15With this fixed, rngtest no longer complains of 'Continous run' errors.
16Before:
17
18rngtest -c 1000 < /dev/hwrng
19rngtest 3
20Copyright (c) 2004 by Henrique de Moraes Holschuh
21This is free software; see the source for copying conditions. There is NO warr.
22
23rngtest: starting FIPS tests...
24rngtest: bits received from input: 20000032
25rngtest: FIPS 140-2 successes: 923
26rngtest: FIPS 140-2 failures: 77
27rngtest: FIPS 140-2(2001-10-10) Monobit: 0
28rngtest: FIPS 140-2(2001-10-10) Poker: 0
29rngtest: FIPS 140-2(2001-10-10) Runs: 1
30rngtest: FIPS 140-2(2001-10-10) Long run: 0
31rngtest: FIPS 140-2(2001-10-10) Continuous run: 76
32rngtest: input channel speed: (min=721.402; avg=46003.510; max=49321.338)Kibitss
33rngtest: FIPS tests speed: (min=11.442; avg=12.714; max=12.801)Mibits/s
34rngtest: Program run time: 1931860 microseconds
35
36After:
37
38rngtest -c 1000 < /dev/hwrng
39rngtest 3
40Copyright (c) 2004 by Henrique de Moraes Holschuh
41This is free software; see the source for copying conditions. There is NO warr.
42
43rngtest: starting FIPS tests...
44rngtest: bits received from input: 20000032
45rngtest: FIPS 140-2 successes: 1000
46rngtest: FIPS 140-2 failures: 0
47rngtest: FIPS 140-2(2001-10-10) Monobit: 0
48rngtest: FIPS 140-2(2001-10-10) Poker: 0
49rngtest: FIPS 140-2(2001-10-10) Runs: 0
50rngtest: FIPS 140-2(2001-10-10) Long run: 0
51rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
52rngtest: input channel speed: (min=777.518; avg=36988.482; max=43115.342)Kibitss
53rngtest: FIPS tests speed: (min=11.951; avg=12.715; max=12.887)Mibits/s
54rngtest: Program run time: 2035543 microseconds
55
56Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
57Reported-by: George Pontis <GPontis@z9.com>
58Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
59Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
60Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
61---
62 drivers/char/hw_random/atmel-rng.c | 7 +++++++
63 1 file changed, 7 insertions(+)
64
65diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c
66index 241df2e..0477982 100644
67--- a/drivers/char/hw_random/atmel-rng.c
68+++ b/drivers/char/hw_random/atmel-rng.c
69@@ -36,6 +36,13 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max,
70 /* data ready? */
71 if (readl(trng->base + TRNG_ODATA) & 1) {
72 *data = readl(trng->base + TRNG_ODATA);
73+ /*
74+ ensure data ready is only set again AFTER the next data
75+ word is ready in case it got set between checking ISR
76+ and reading ODATA, so we don't risk re-reading the
77+ same word
78+ */
79+ readl(trng->base + TRNG_ISR);
80 return 4;
81 } else
82 return 0;
83--
841.7.9.5
85
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch
new file mode 100644
index 00000000..fa13f31f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch
@@ -0,0 +1,46 @@
1From e7814580e8b3d8f81dac54f4919f7f3b75b40c0d Mon Sep 17 00:00:00 2001
2From: Mathias Krause <minipli@googlemail.com>
3Date: Wed, 30 May 2012 01:43:08 +0200
4Subject: [PATCH 18/67] crypto: aesni-intel - fix unaligned cbc decrypt for
5 x86-32
6
7commit 7c8d51848a88aafdb68f42b6b650c83485ea2f84 upstream.
8
9The 32 bit variant of cbc(aes) decrypt is using instructions requiring
10128 bit aligned memory locations but fails to ensure this constraint in
11the code. Fix this by loading the data into intermediate registers with
12load unaligned instructions.
13
14This fixes reported general protection faults related to aesni.
15
16References: https://bugzilla.kernel.org/show_bug.cgi?id=43223
17Reported-by: Daniel <garkein@mailueberfall.de>
18Signed-off-by: Mathias Krause <minipli@googlemail.com>
19Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 arch/x86/crypto/aesni-intel_asm.S | 6 ++++--
23 1 file changed, 4 insertions(+), 2 deletions(-)
24
25diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
26index be6d9e3..3470624 100644
27--- a/arch/x86/crypto/aesni-intel_asm.S
28+++ b/arch/x86/crypto/aesni-intel_asm.S
29@@ -2460,10 +2460,12 @@ ENTRY(aesni_cbc_dec)
30 pxor IN3, STATE4
31 movaps IN4, IV
32 #else
33- pxor (INP), STATE2
34- pxor 0x10(INP), STATE3
35 pxor IN1, STATE4
36 movaps IN2, IV
37+ movups (INP), IN1
38+ pxor IN1, STATE2
39+ movups 0x10(INP), IN2
40+ pxor IN2, STATE3
41 #endif
42 movups STATE1, (OUTP)
43 movups STATE2, 0x10(OUTP)
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch
new file mode 100644
index 00000000..7135b15c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch
@@ -0,0 +1,58 @@
1From 88d89048f346736a57637924307749c8cc782751 Mon Sep 17 00:00:00 2001
2From: Andre Przywara <andre.przywara@amd.com>
3Date: Tue, 29 May 2012 13:07:31 +0200
4Subject: [PATCH 19/67] xen/setup: filter APERFMPERF cpuid feature out
5
6commit 5e626254206a709c6e937f3dda69bf26c7344f6f upstream.
7
8Xen PV kernels allow access to the APERF/MPERF registers to read the
9effective frequency. Access to the MSRs is however redirected to the
10currently scheduled physical CPU, making consecutive read and
11compares unreliable. In addition each rdmsr traps into the hypervisor.
12So to avoid bogus readouts and expensive traps, disable the kernel
13internal feature flag for APERF/MPERF if running under Xen.
14This will
15a) remove the aperfmperf flag from /proc/cpuinfo
16b) not mislead the power scheduler (arch/x86/kernel/cpu/sched.c) to
17 use the feature to improve scheduling (by default disabled)
18c) not mislead the cpufreq driver to use the MSRs
19
20This does not cover userland programs which access the MSRs via the
21device file interface, but this will be addressed separately.
22
23Signed-off-by: Andre Przywara <andre.przywara@amd.com>
24Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 arch/x86/xen/enlighten.c | 8 ++++++++
28 1 file changed, 8 insertions(+)
29
30diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
31index cca659e..44d4393 100644
32--- a/arch/x86/xen/enlighten.c
33+++ b/arch/x86/xen/enlighten.c
34@@ -198,6 +198,9 @@ static void __init xen_banner(void)
35 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
36 }
37
38+#define CPUID_THERM_POWER_LEAF 6
39+#define APERFMPERF_PRESENT 0
40+
41 static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
42 static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
43
44@@ -218,6 +221,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
45 maskedx = cpuid_leaf1_edx_mask;
46 break;
47
48+ case CPUID_THERM_POWER_LEAF:
49+ /* Disabling APERFMPERF for kernel usage */
50+ maskecx = ~(1 << APERFMPERF_PRESENT);
51+ break;
52+
53 case 0xb:
54 /* Suppress extended topology stuff */
55 maskebx = 0;
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch
new file mode 100644
index 00000000..8d9f08cd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch
@@ -0,0 +1,33 @@
1From 11e050e0bcf1f48f656630c0e603752e8d537126 Mon Sep 17 00:00:00 2001
2From: Trond Myklebust <Trond.Myklebust@netapp.com>
3Date: Thu, 31 May 2012 15:26:38 -0400
4Subject: [PATCH 20/67] NFSv4.1: Fix a request leak on the back channel
5
6commit b3b02ae5865c2dcd506322e0fc6def59a042e72f upstream.
7
8If the call to svc_process_common() fails, then the request
9needs to be freed before we can exit bc_svc_process.
10
11Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
12Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
13---
14 net/sunrpc/svc.c | 3 ++-
15 1 file changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
18index d4ad50e..c80c162 100644
19--- a/net/sunrpc/svc.c
20+++ b/net/sunrpc/svc.c
21@@ -1358,7 +1358,8 @@ bc_svc_process(struct svc_serv *serv, struct rpc_rqst *req,
22 sizeof(req->rq_snd_buf));
23 return bc_send(req);
24 } else {
25- /* Nothing to do to drop request */
26+ /* drop request */
27+ xprt_free_bc_request(req);
28 return 0;
29 }
30 }
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch
new file mode 100644
index 00000000..b2ff99be
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch
@@ -0,0 +1,70 @@
1From a17c423f5b57ba5a2c6dc959b6259d07f7d32741 Mon Sep 17 00:00:00 2001
2From: AnilKumar Ch <anilkumar@ti.com>
3Date: Wed, 23 May 2012 17:45:09 +0530
4Subject: [PATCH 21/67] can: c_can: fix "BUG! echo_skb is occupied!" during
5 transmit
6
7commit 617caccebe451716df21c069b079d5936ed7b0f3 upstream.
8
9This patch fixes an issue with transmit routine, which causes
10"can_put_echo_skb: BUG! echo_skb is occupied!" message when
11using "cansequence -p" on D_CAN controller.
12
13In c_can driver, while transmitting packets tx_echo flag holds
14the no of can frames put for transmission into the hardware.
15
16As the comment above c_can_do_tx() indicates, if we find any packet
17which is not transmitted then we should stop looking for more.
18In the current implementation this is not taken care of causing the
19said message.
20
21Also, fix the condition used to find if the packet is transmitted
22or not. Current code skips the first tx message object and ends up
23checking one extra invalid object.
24
25While at it, fix the comment on top of c_can_do_tx() to use the
26terminology "packet" instead of "package" since it is more
27standard.
28
29Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
30Acked-by: Wolfgang Grandegger <wg@grandegger.com>
31Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
32Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
33---
34 drivers/net/can/c_can/c_can.c | 6 ++++--
35 1 file changed, 4 insertions(+), 2 deletions(-)
36
37diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
38index 536bda0..9ac28df 100644
39--- a/drivers/net/can/c_can/c_can.c
40+++ b/drivers/net/can/c_can/c_can.c
41@@ -686,7 +686,7 @@ static int c_can_get_berr_counter(const struct net_device *dev,
42 *
43 * We iterate from priv->tx_echo to priv->tx_next and check if the
44 * packet has been transmitted, echo it back to the CAN framework.
45- * If we discover a not yet transmitted package, stop looking for more.
46+ * If we discover a not yet transmitted packet, stop looking for more.
47 */
48 static void c_can_do_tx(struct net_device *dev)
49 {
50@@ -698,7 +698,7 @@ static void c_can_do_tx(struct net_device *dev)
51 for (/* nix */; (priv->tx_next - priv->tx_echo) > 0; priv->tx_echo++) {
52 msg_obj_no = get_tx_echo_msg_obj(priv);
53 val = c_can_read_reg32(priv, &priv->regs->txrqst1);
54- if (!(val & (1 << msg_obj_no))) {
55+ if (!(val & (1 << (msg_obj_no - 1)))) {
56 can_get_echo_skb(dev,
57 msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST);
58 stats->tx_bytes += priv->read_reg(priv,
59@@ -706,6 +706,8 @@ static void c_can_do_tx(struct net_device *dev)
60 & IF_MCONT_DLC_MASK;
61 stats->tx_packets++;
62 c_can_inval_msg_object(dev, 0, msg_obj_no);
63+ } else {
64+ break;
65 }
66 }
67
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch
new file mode 100644
index 00000000..34b220e2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch
@@ -0,0 +1,73 @@
1From b030affc0fa9283e4ee79a349f6b41d3217c0dc7 Mon Sep 17 00:00:00 2001
2From: AnilKumar Ch <anilkumar@ti.com>
3Date: Wed, 23 May 2012 17:45:10 +0530
4Subject: [PATCH 22/67] can: c_can: fix an interrupt thrash issue with c_can
5 driver
6
7commit 148c87c89e1a8863d3d965179f3ab1a06490569e upstream.
8
9This patch fixes an interrupt thrash issue with c_can driver.
10
11In c_can_isr() function interrupts are disabled and enabled only in
12c_can_poll() function. c_can_isr() & c_can_poll() both read the
13irqstatus flag. However, irqstatus is always read as 0 in c_can_poll()
14because all C_CAN interrupts are disabled in c_can_isr(). This causes
15all interrupts to be re-enabled in c_can_poll() which in turn causes
16another interrupt since the event is not really handled. This keeps
17happening causing a flood of interrupts.
18
19To fix this, read the irqstatus register in isr and use the same cached
20value in the poll function.
21
22Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
23Acked-by: Wolfgang Grandegger <wg@grandegger.com>
24Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
25Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
26---
27 drivers/net/can/c_can/c_can.c | 7 +++----
28 drivers/net/can/c_can/c_can.h | 1 +
29 2 files changed, 4 insertions(+), 4 deletions(-)
30
31diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
32index 9ac28df..fa01621 100644
33--- a/drivers/net/can/c_can/c_can.c
34+++ b/drivers/net/can/c_can/c_can.c
35@@ -952,7 +952,7 @@ static int c_can_poll(struct napi_struct *napi, int quota)
36 struct net_device *dev = napi->dev;
37 struct c_can_priv *priv = netdev_priv(dev);
38
39- irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
40+ irqstatus = priv->irqstatus;
41 if (!irqstatus)
42 goto end;
43
44@@ -1030,12 +1030,11 @@ end:
45
46 static irqreturn_t c_can_isr(int irq, void *dev_id)
47 {
48- u16 irqstatus;
49 struct net_device *dev = (struct net_device *)dev_id;
50 struct c_can_priv *priv = netdev_priv(dev);
51
52- irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
53- if (!irqstatus)
54+ priv->irqstatus = priv->read_reg(priv, &priv->regs->interrupt);
55+ if (!priv->irqstatus)
56 return IRQ_NONE;
57
58 /* disable all interrupts and schedule the NAPI */
59diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h
60index 9b7fbef..5f32d34 100644
61--- a/drivers/net/can/c_can/c_can.h
62+++ b/drivers/net/can/c_can/c_can.h
63@@ -76,6 +76,7 @@ struct c_can_priv {
64 unsigned int tx_next;
65 unsigned int tx_echo;
66 void *priv; /* for board-specific data */
67+ u16 irqstatus;
68 };
69
70 struct net_device *alloc_c_can_dev(void);
71--
721.7.9.5
73
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch
new file mode 100644
index 00000000..8baf6c31
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch
@@ -0,0 +1,47 @@
1From cf14ce22ab2b0faada7f120865c7970a07a0d06d Mon Sep 17 00:00:00 2001
2From: AnilKumar Ch <anilkumar@ti.com>
3Date: Wed, 23 May 2012 17:45:11 +0530
4Subject: [PATCH 23/67] can: c_can: fix race condition in c_can_open()
5
6commit f461f27a4436dbe691908fe08b867ef888848cc3 upstream.
7
8Fix the issue of C_CAN interrupts getting disabled forever when canconfig
9utility is used multiple times. According to NAPI usage we disable all
10the hardware interrupts in ISR and re-enable them in poll(). Current
11implementation calls napi_enable() after hardware interrupts are enabled.
12If we get any interrupts between these two steps then we do not process
13those interrupts because napi is not enabled. Mostly these interrupts
14come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable()
15happens before HW interrupts enabled then c_can_poll() function will be
16called eventual re-enabling.
17
18This patch moves the napi_enable() call before interrupts enabled.
19
20Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
21Acked-by: Wolfgang Grandegger <wg@grandegger.com>
22Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
23Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
24---
25 drivers/net/can/c_can/c_can.c | 3 ++-
26 1 file changed, 2 insertions(+), 1 deletion(-)
27
28diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
29index fa01621..8dc84d6 100644
30--- a/drivers/net/can/c_can/c_can.c
31+++ b/drivers/net/can/c_can/c_can.c
32@@ -1064,10 +1064,11 @@ static int c_can_open(struct net_device *dev)
33 goto exit_irq_fail;
34 }
35
36+ napi_enable(&priv->napi);
37+
38 /* start the c_can controller */
39 c_can_start(dev);
40
41- napi_enable(&priv->napi);
42 netif_start_queue(dev);
43
44 return 0;
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch
new file mode 100644
index 00000000..6714a866
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch
@@ -0,0 +1,33 @@
1From 8b306e31b138a75a790c1f78f911714fee071ab8 Mon Sep 17 00:00:00 2001
2From: Sascha Hauer <s.hauer@pengutronix.de>
3Date: Mon, 4 Jun 2012 14:58:07 +0200
4Subject: [PATCH 24/67] ARM i.MX53: Fix PLL4 base address
5
6commit cdd781ab1906d039c2a93078385645d2d5af8491 upstream.
7
8MX53_DPLL4_BASE accidently returned the base address of PLL3.
9Fix this.
10
11Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
12[bwh: Backported to 3.2: adjust filename]
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 arch/arm/mach-mx5/crm_regs.h | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h
19index 5e11ba7..5e3f1f0 100644
20--- a/arch/arm/mach-mx5/crm_regs.h
21+++ b/arch/arm/mach-mx5/crm_regs.h
22@@ -23,7 +23,7 @@
23 #define MX53_DPLL1_BASE MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
24 #define MX53_DPLL2_BASE MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
25 #define MX53_DPLL3_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
26-#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
27+#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL4_BASE_ADDR)
28
29 /* PLL Register Offsets */
30 #define MXC_PLL_DP_CTL 0x00
31--
321.7.9.5
33
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch
new file mode 100644
index 00000000..d7a896eb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch
@@ -0,0 +1,50 @@
1From cb8353a20faf8ec806f2e04848e1a8d2ba17194c Mon Sep 17 00:00:00 2001
2From: Grazvydas Ignotas <notasas@gmail.com>
3Date: Sat, 26 May 2012 00:21:33 +0300
4Subject: [PATCH 25/67] usb: musb_gadget: fix crash caused by dangling pointer
5
6commit 08f75bf14fadaa81fe362d5acda9b77b113dd0a2 upstream.
7
8usb_ep_ops.disable must clear external copy of the endpoint descriptor,
9otherwise musb crashes after loading/unloading several gadget modules
10in a row:
11
12Unable to handle kernel paging request at virtual address bf013730
13pgd = c0004000
14[bf013730] *pgd=8f26d811, *pte=00000000, *ppte=00000000
15Internal error: Oops: 7 [#1]
16Modules linked in: g_cdc [last unloaded: g_file_storage]
17CPU: 0 Not tainted (3.2.17 #647)
18PC is at musb_gadget_enable+0x4c/0x24c
19LR is at _raw_spin_lock_irqsave+0x4c/0x58
20[<c027c030>] (musb_gadget_enable+0x4c/0x24c) from [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc])
21[<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc]) from [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc])
22[<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc]) from [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc])
23[<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc]) from [<c027b744>] (musb_g_ep0_irq+0x844/0x924)
24[<c027b744>] (musb_g_ep0_irq+0x844/0x924) from [<c027a97c>] (musb_interrupt+0x79c/0x864)
25[<c027a97c>] (musb_interrupt+0x79c/0x864) from [<c027aaa8>] (generic_interrupt+0x64/0x7c)
26[<c027aaa8>] (generic_interrupt+0x64/0x7c) from [<c00797cc>] (handle_irq_event_percpu+0x28/0x178)
27...
28
29Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
30Signed-off-by: Felipe Balbi <balbi@ti.com>
31Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
32---
33 drivers/usb/musb/musb_gadget.c | 1 +
34 1 file changed, 1 insertion(+)
35
36diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
37index 47349ca..28ea50c 100644
38--- a/drivers/usb/musb/musb_gadget.c
39+++ b/drivers/usb/musb/musb_gadget.c
40@@ -1206,6 +1206,7 @@ static int musb_gadget_disable(struct usb_ep *ep)
41 }
42
43 musb_ep->desc = NULL;
44+ musb_ep->end_point.desc = NULL;
45
46 /* abort all pending DMA and requests */
47 nuke(musb_ep, -ESHUTDOWN);
48--
491.7.9.5
50
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch
new file mode 100644
index 00000000..0829b272
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch
@@ -0,0 +1,80 @@
1From 7b2ac3203d120ea1afdf29bdcd5e99d59875e348 Mon Sep 17 00:00:00 2001
2From: Johannes Berg <johannes.berg@intel.com>
3Date: Thu, 31 May 2012 15:09:27 +0200
4Subject: [PATCH 26/67] mac80211: clean up remain-on-channel on interface stop
5
6commit 71ecfa1893034eeb1c93e02e22ee2ad26d080858 upstream.
7
8When any interface goes down, it could be the one that we
9were doing a remain-on-channel with. We therefore need to
10cancel the remain-on-channel and flush the related work
11structs so they don't run after the interface has been
12removed or even destroyed.
13
14It's also possible in this case that an off-channel SKB
15was never transmitted, so free it if this is the case.
16Note that this can also happen if the driver finishes
17the off-channel period without ever starting it.
18
19Reported-by: Nirav Shah <nirav.j2.shah@intel.com>
20Signed-off-by: Johannes Berg <johannes.berg@intel.com>
21Signed-off-by: John W. Linville <linville@tuxdriver.com>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 net/mac80211/iface.c | 12 ++++++++++++
25 net/mac80211/offchannel.c | 16 ++++++++++++++++
26 2 files changed, 28 insertions(+)
27
28diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
29index 30d7355..f4ddf34 100644
30--- a/net/mac80211/iface.c
31+++ b/net/mac80211/iface.c
32@@ -495,6 +495,18 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
33 ieee80211_configure_filter(local);
34 break;
35 default:
36+ mutex_lock(&local->mtx);
37+ if (local->hw_roc_dev == sdata->dev &&
38+ local->hw_roc_channel) {
39+ /* ignore return value since this is racy */
40+ drv_cancel_remain_on_channel(local);
41+ ieee80211_queue_work(&local->hw, &local->hw_roc_done);
42+ }
43+ mutex_unlock(&local->mtx);
44+
45+ flush_work(&local->hw_roc_start);
46+ flush_work(&local->hw_roc_done);
47+
48 flush_work(&sdata->work);
49 /*
50 * When we get here, the interface is marked down.
51diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
52index 1b239be..db2c215 100644
53--- a/net/mac80211/offchannel.c
54+++ b/net/mac80211/offchannel.c
55@@ -246,6 +246,22 @@ static void ieee80211_hw_roc_done(struct work_struct *work)
56 return;
57 }
58
59+ /* was never transmitted */
60+ if (local->hw_roc_skb) {
61+ u64 cookie;
62+
63+ cookie = local->hw_roc_cookie ^ 2;
64+
65+ cfg80211_mgmt_tx_status(local->hw_roc_dev, cookie,
66+ local->hw_roc_skb->data,
67+ local->hw_roc_skb->len, false,
68+ GFP_KERNEL);
69+
70+ kfree_skb(local->hw_roc_skb);
71+ local->hw_roc_skb = NULL;
72+ local->hw_roc_skb_for_status = NULL;
73+ }
74+
75 if (!local->hw_roc_for_tx)
76 cfg80211_remain_on_channel_expired(local->hw_roc_dev,
77 local->hw_roc_cookie,
78--
791.7.9.5
80
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch
new file mode 100644
index 00000000..892b6c2e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch
@@ -0,0 +1,174 @@
1From da83f4fb1b871f4b4398362b12ca03b82b223a2e Mon Sep 17 00:00:00 2001
2From: Stanislaw Gruszka <sgruszka@redhat.com>
3Date: Fri, 1 Jun 2012 11:29:40 +0200
4Subject: [PATCH 27/67] rt2x00: use atomic variable for seqno
5
6commit e5851dac2c95af7159716832300b9f50c62c648e upstream.
7
8Remove spinlock as atomic_t can be used instead. Note we use only 16
9lower bits, upper bits are changed but we impilcilty cast to u16.
10
11This fix possible deadlock on IBSS mode reproted by lockdep:
12
13=================================
14[ INFO: inconsistent lock state ]
153.4.0-wl+ #4 Not tainted
16---------------------------------
17inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
18kworker/u:2/30374 [HC0[0]:SC0[0]:HE1:SE1] takes:
19 (&(&intf->seqlock)->rlock){+.?...}, at: [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
20{IN-SOFTIRQ-W} state was registered at:
21 [<c04978ab>] __lock_acquire+0x47b/0x1050
22 [<c0498504>] lock_acquire+0x84/0xf0
23 [<c0835733>] _raw_spin_lock+0x33/0x40
24 [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
25 [<f9979f2a>] rt2x00queue_write_tx_frame+0x1a/0x300 [rt2x00lib]
26 [<f997834f>] rt2x00mac_tx+0x7f/0x380 [rt2x00lib]
27 [<f98fe363>] __ieee80211_tx+0x1b3/0x300 [mac80211]
28 [<f98ffdf5>] ieee80211_tx+0x105/0x130 [mac80211]
29 [<f99000dd>] ieee80211_xmit+0xad/0x100 [mac80211]
30 [<f9900519>] ieee80211_subif_start_xmit+0x2d9/0x930 [mac80211]
31 [<c0782e87>] dev_hard_start_xmit+0x307/0x660
32 [<c079bb71>] sch_direct_xmit+0xa1/0x1e0
33 [<c0784bb3>] dev_queue_xmit+0x183/0x730
34 [<c078c27a>] neigh_resolve_output+0xfa/0x1e0
35 [<c07b436a>] ip_finish_output+0x24a/0x460
36 [<c07b4897>] ip_output+0xb7/0x100
37 [<c07b2d60>] ip_local_out+0x20/0x60
38 [<c07e01ff>] igmpv3_sendpack+0x4f/0x60
39 [<c07e108f>] igmp_ifc_timer_expire+0x29f/0x330
40 [<c04520fc>] run_timer_softirq+0x15c/0x2f0
41 [<c0449e3e>] __do_softirq+0xae/0x1e0
42irq event stamp: 18380437
43hardirqs last enabled at (18380437): [<c0526027>] __slab_alloc.clone.3+0x67/0x5f0
44hardirqs last disabled at (18380436): [<c0525ff3>] __slab_alloc.clone.3+0x33/0x5f0
45softirqs last enabled at (18377616): [<c0449eb3>] __do_softirq+0x123/0x1e0
46softirqs last disabled at (18377611): [<c041278d>] do_softirq+0x9d/0xe0
47
48other info that might help us debug this:
49 Possible unsafe locking scenario:
50
51 CPU0
52 ----
53 lock(&(&intf->seqlock)->rlock);
54 <Interrupt>
55 lock(&(&intf->seqlock)->rlock);
56
57 *** DEADLOCK ***
58
594 locks held by kworker/u:2/30374:
60 #0: (wiphy_name(local->hw.wiphy)){++++.+}, at: [<c045cf99>] process_one_work+0x109/0x3f0
61 #1: ((&sdata->work)){+.+.+.}, at: [<c045cf99>] process_one_work+0x109/0x3f0
62 #2: (&ifibss->mtx){+.+.+.}, at: [<f98f005b>] ieee80211_ibss_work+0x1b/0x470 [mac80211]
63 #3: (&intf->beacon_skb_mutex){+.+...}, at: [<f997a644>] rt2x00queue_update_beacon+0x24/0x50 [rt2x00lib]
64
65stack backtrace:
66Pid: 30374, comm: kworker/u:2 Not tainted 3.4.0-wl+ #4
67Call Trace:
68 [<c04962a6>] print_usage_bug+0x1f6/0x220
69 [<c0496a12>] mark_lock+0x2c2/0x300
70 [<c0495ff0>] ? check_usage_forwards+0xc0/0xc0
71 [<c04978ec>] __lock_acquire+0x4bc/0x1050
72 [<c0527890>] ? __kmalloc_track_caller+0x1c0/0x1d0
73 [<c0777fb6>] ? copy_skb_header+0x26/0x90
74 [<c0498504>] lock_acquire+0x84/0xf0
75 [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
76 [<c0835733>] _raw_spin_lock+0x33/0x40
77 [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
78 [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
79 [<f997a5cf>] rt2x00queue_update_beacon_locked+0x5f/0xb0 [rt2x00lib]
80 [<f997a64d>] rt2x00queue_update_beacon+0x2d/0x50 [rt2x00lib]
81 [<f9977e3a>] rt2x00mac_bss_info_changed+0x1ca/0x200 [rt2x00lib]
82 [<f9977c70>] ? rt2x00mac_remove_interface+0x70/0x70 [rt2x00lib]
83 [<f98e4dd0>] ieee80211_bss_info_change_notify+0xe0/0x1d0 [mac80211]
84 [<f98ef7b8>] __ieee80211_sta_join_ibss+0x3b8/0x610 [mac80211]
85 [<c0496ab4>] ? mark_held_locks+0x64/0xc0
86 [<c0440012>] ? virt_efi_query_capsule_caps+0x12/0x50
87 [<f98efb09>] ieee80211_sta_join_ibss+0xf9/0x140 [mac80211]
88 [<f98f0456>] ieee80211_ibss_work+0x416/0x470 [mac80211]
89 [<c0496d8b>] ? trace_hardirqs_on+0xb/0x10
90 [<c077683b>] ? skb_dequeue+0x4b/0x70
91 [<f98f207f>] ieee80211_iface_work+0x13f/0x230 [mac80211]
92 [<c045cf99>] ? process_one_work+0x109/0x3f0
93 [<c045d015>] process_one_work+0x185/0x3f0
94 [<c045cf99>] ? process_one_work+0x109/0x3f0
95 [<f98f1f40>] ? ieee80211_teardown_sdata+0xa0/0xa0 [mac80211]
96 [<c045ed86>] worker_thread+0x116/0x270
97 [<c045ec70>] ? manage_workers+0x1e0/0x1e0
98 [<c0462f64>] kthread+0x84/0x90
99 [<c0462ee0>] ? __init_kthread_worker+0x60/0x60
100 [<c083d382>] kernel_thread_helper+0x6/0x10
101
102Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
103Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
104Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
105Signed-off-by: John W. Linville <linville@tuxdriver.com>
106Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
107---
108 drivers/net/wireless/rt2x00/rt2x00.h | 3 +--
109 drivers/net/wireless/rt2x00/rt2x00mac.c | 1 -
110 drivers/net/wireless/rt2x00/rt2x00queue.c | 13 ++++++-------
111 3 files changed, 7 insertions(+), 10 deletions(-)
112
113diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
114index 99ff12d..c778164 100644
115--- a/drivers/net/wireless/rt2x00/rt2x00.h
116+++ b/drivers/net/wireless/rt2x00/rt2x00.h
117@@ -390,8 +390,7 @@ struct rt2x00_intf {
118 * for hardware which doesn't support hardware
119 * sequence counting.
120 */
121- spinlock_t seqlock;
122- u16 seqno;
123+ atomic_t seqno;
124 };
125
126 static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
127diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
128index 373dae1..921da9a 100644
129--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
130+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
131@@ -277,7 +277,6 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
132 else
133 rt2x00dev->intf_sta_count++;
134
135- spin_lock_init(&intf->seqlock);
136 mutex_init(&intf->beacon_skb_mutex);
137 intf->beacon = entry;
138
139diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
140index 9b1b2b7..50f92d5 100644
141--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
142+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
143@@ -207,6 +207,7 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
144 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
145 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
146 struct rt2x00_intf *intf = vif_to_intf(tx_info->control.vif);
147+ u16 seqno;
148
149 if (!(tx_info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ))
150 return;
151@@ -227,15 +228,13 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
152 * sequence counting per-frame, since those will override the
153 * sequence counter given by mac80211.
154 */
155- spin_lock(&intf->seqlock);
156-
157 if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
158- intf->seqno += 0x10;
159- hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
160- hdr->seq_ctrl |= cpu_to_le16(intf->seqno);
161-
162- spin_unlock(&intf->seqlock);
163+ seqno = atomic_add_return(0x10, &intf->seqno);
164+ else
165+ seqno = atomic_read(&intf->seqno);
166
167+ hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
168+ hdr->seq_ctrl |= cpu_to_le16(seqno);
169 }
170
171 static void rt2x00queue_create_tx_descriptor_plcp(struct rt2x00_dev *rt2x00dev,
172--
1731.7.9.5
174
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch
new file mode 100644
index 00000000..29025929
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch
@@ -0,0 +1,44 @@
1From 17276afbec2e85771fb30bc2ea9150e4d75ccc89 Mon Sep 17 00:00:00 2001
2From: Johannes Berg <johannes.berg@intel.com>
3Date: Mon, 4 Jun 2012 13:43:11 +0200
4Subject: [PATCH 28/67] iwlwifi: disable WoWLAN if !CONFIG_PM_SLEEP
5
6commit fcb6ff5e2cb83e1de10631f6621f45ca3401bf61 upstream.
7
8If CONFIG_PM_SLEEP is disabled, then iwlwifi doesn't
9support suspend/resume handlers and thus mac80211
10(correctly) refuses advertising WoWLAN. Disable
11WoWLAN in the driver in this case.
12
13Reported-by: Sebastian Kemper <sebastian_ml@gmx.net>
14Signed-off-by: Johannes Berg <johannes.berg@intel.com>
15Signed-off-by: John W. Linville <linville@tuxdriver.com>
16[bwh: Backported to 3.2: adjust filename, context]
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/net/wireless/iwlwifi/iwl-agn.c | 2 ++
20 1 file changed, 2 insertions(+)
21
22diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
23index d7d2512..8b88e87 100644
24--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
25+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
26@@ -1696,6 +1696,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
27 WIPHY_FLAG_DISABLE_BEACON_HINTS |
28 WIPHY_FLAG_IBSS_RSN;
29
30+#ifdef CONFIG_PM_SLEEP
31 if (priv->ucode_wowlan.code.len && device_can_wakeup(bus(priv)->dev)) {
32 hw->wiphy->wowlan.flags = WIPHY_WOWLAN_MAGIC_PKT |
33 WIPHY_WOWLAN_DISCONNECT |
34@@ -1712,6 +1713,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
35 hw->wiphy->wowlan.pattern_max_len =
36 IWLAGN_WOWLAN_MAX_PATTERN_LEN;
37 }
38+#endif
39
40 if (iwlagn_mod_params.power_save)
41 hw->wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
42--
431.7.9.5
44
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch
new file mode 100644
index 00000000..4b600f20
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch
@@ -0,0 +1,66 @@
1From d3ca90f12aa66e72ccb2e1674664d498971f0d77 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Tue, 5 Jun 2012 12:25:19 +0100
4Subject: [PATCH 29/67] ASoC: wm8994: Ensure all AIFnCLK events are run from
5 the _late variants
6
7commit c8fdc1b56611faa7b38eab6b99da5e20113661ff upstream.
8
9Ensure that all the actions get taken at appropriate times by calling the
10_PRE and _POST events for the aifNclk_ev functions explicitly.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 sound/soc/codecs/wm8994.c | 12 ++++++++----
16 1 file changed, 8 insertions(+), 4 deletions(-)
17
18diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
19index 3e7aa22..3de9c6a 100644
20--- a/sound/soc/codecs/wm8994.c
21+++ b/sound/soc/codecs/wm8994.c
22@@ -1090,17 +1090,19 @@ static int late_enable_ev(struct snd_soc_dapm_widget *w,
23 switch (event) {
24 case SND_SOC_DAPM_PRE_PMU:
25 if (wm8994->aif1clk_enable) {
26- aif1clk_ev(w, kcontrol, event);
27+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU);
28 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
29 WM8994_AIF1CLK_ENA_MASK,
30 WM8994_AIF1CLK_ENA);
31+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU);
32 wm8994->aif1clk_enable = 0;
33 }
34 if (wm8994->aif2clk_enable) {
35- aif2clk_ev(w, kcontrol, event);
36+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU);
37 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
38 WM8994_AIF2CLK_ENA_MASK,
39 WM8994_AIF2CLK_ENA);
40+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU);
41 wm8994->aif2clk_enable = 0;
42 }
43 break;
44@@ -1121,15 +1123,17 @@ static int late_disable_ev(struct snd_soc_dapm_widget *w,
45 switch (event) {
46 case SND_SOC_DAPM_POST_PMD:
47 if (wm8994->aif1clk_disable) {
48+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD);
49 snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
50 WM8994_AIF1CLK_ENA_MASK, 0);
51- aif1clk_ev(w, kcontrol, event);
52+ aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD);
53 wm8994->aif1clk_disable = 0;
54 }
55 if (wm8994->aif2clk_disable) {
56+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD);
57 snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
58 WM8994_AIF2CLK_ENA_MASK, 0);
59- aif2clk_ev(w, kcontrol, event);
60+ aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD);
61 wm8994->aif2clk_disable = 0;
62 }
63 break;
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch
new file mode 100644
index 00000000..5d536dbe
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch
@@ -0,0 +1,170 @@
1From 35621bc53d008a89c20278c6bf5e049addcd4cd1 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Tue, 5 Jun 2012 12:31:32 +0100
4Subject: [PATCH 30/67] ASoC: wm8994: Apply volume updates with clocks enabled
5
6commit bfd37bb5f681961e255fd2f346c20fdae2ef3f27 upstream.
7
8Volume updates may not be acted upon if there is no clock applied when
9the volume update is written. Ensure this doesn't happen by writing out
10registers with volume updates after we enable each of the clocks.
11
12There are more registers updated than before as previously we were
13relying on wm_hubs to set those for controls it manages.
14
15Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 sound/soc/codecs/wm8994.c | 93 ++++++++++++++++++++++++++++-----------------
19 1 file changed, 58 insertions(+), 35 deletions(-)
20
21diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
22index 3de9c6a..de61b8a 100644
23--- a/sound/soc/codecs/wm8994.c
24+++ b/sound/soc/codecs/wm8994.c
25@@ -41,6 +41,39 @@
26 #define WM8994_NUM_DRC 3
27 #define WM8994_NUM_EQ 3
28
29+static struct {
30+ unsigned int reg;
31+ unsigned int mask;
32+} wm8994_vu_bits[] = {
33+ { WM8994_LEFT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
34+ { WM8994_RIGHT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
35+ { WM8994_LEFT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
36+ { WM8994_RIGHT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
37+ { WM8994_SPEAKER_VOLUME_LEFT, WM8994_SPKOUT_VU },
38+ { WM8994_SPEAKER_VOLUME_RIGHT, WM8994_SPKOUT_VU },
39+ { WM8994_LEFT_OUTPUT_VOLUME, WM8994_HPOUT1_VU },
40+ { WM8994_RIGHT_OUTPUT_VOLUME, WM8994_HPOUT1_VU },
41+ { WM8994_LEFT_OPGA_VOLUME, WM8994_MIXOUT_VU },
42+ { WM8994_RIGHT_OPGA_VOLUME, WM8994_MIXOUT_VU },
43+
44+ { WM8994_AIF1_DAC1_LEFT_VOLUME, WM8994_AIF1DAC1_VU },
45+ { WM8994_AIF1_DAC1_RIGHT_VOLUME, WM8994_AIF1DAC1_VU },
46+ { WM8994_AIF1_DAC2_LEFT_VOLUME, WM8994_AIF1DAC2_VU },
47+ { WM8994_AIF1_DAC2_RIGHT_VOLUME, WM8994_AIF1DAC2_VU },
48+ { WM8994_AIF2_DAC_LEFT_VOLUME, WM8994_AIF2DAC_VU },
49+ { WM8994_AIF2_DAC_RIGHT_VOLUME, WM8994_AIF2DAC_VU },
50+ { WM8994_AIF1_ADC1_LEFT_VOLUME, WM8994_AIF1ADC1_VU },
51+ { WM8994_AIF1_ADC1_RIGHT_VOLUME, WM8994_AIF1ADC1_VU },
52+ { WM8994_AIF1_ADC2_LEFT_VOLUME, WM8994_AIF1ADC2_VU },
53+ { WM8994_AIF1_ADC2_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
54+ { WM8994_AIF2_ADC_LEFT_VOLUME, WM8994_AIF2ADC_VU },
55+ { WM8994_AIF2_ADC_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
56+ { WM8994_DAC1_LEFT_VOLUME, WM8994_DAC1_VU },
57+ { WM8994_DAC1_RIGHT_VOLUME, WM8994_DAC1_VU },
58+ { WM8994_DAC2_LEFT_VOLUME, WM8994_DAC2_VU },
59+ { WM8994_DAC2_RIGHT_VOLUME, WM8994_DAC2_VU },
60+};
61+
62 static int wm8994_drc_base[] = {
63 WM8994_AIF1_DRC1_1,
64 WM8994_AIF1_DRC2_1,
65@@ -889,6 +922,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
66 struct snd_soc_codec *codec = w->codec;
67 struct wm8994 *control = codec->control_data;
68 int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
69+ int i;
70 int dac;
71 int adc;
72 int val;
73@@ -947,6 +981,13 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
74 WM8994_AIF1DAC2L_ENA);
75 break;
76
77+ case SND_SOC_DAPM_POST_PMU:
78+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
79+ snd_soc_write(codec, wm8994_vu_bits[i].reg,
80+ snd_soc_read(codec,
81+ wm8994_vu_bits[i].reg));
82+ break;
83+
84 case SND_SOC_DAPM_PRE_PMD:
85 case SND_SOC_DAPM_POST_PMD:
86 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
87@@ -972,6 +1013,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
88 struct snd_kcontrol *kcontrol, int event)
89 {
90 struct snd_soc_codec *codec = w->codec;
91+ int i;
92 int dac;
93 int adc;
94 int val;
95@@ -1022,6 +1064,13 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
96 WM8994_AIF2DACR_ENA);
97 break;
98
99+ case SND_SOC_DAPM_POST_PMU:
100+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
101+ snd_soc_write(codec, wm8994_vu_bits[i].reg,
102+ snd_soc_read(codec,
103+ wm8994_vu_bits[i].reg));
104+ break;
105+
106 case SND_SOC_DAPM_PRE_PMD:
107 case SND_SOC_DAPM_POST_PMD:
108 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5,
109@@ -1470,9 +1519,11 @@ SND_SOC_DAPM_POST("Late Disable PGA", late_disable_ev)
110
111 static const struct snd_soc_dapm_widget wm8994_lateclk_widgets[] = {
112 SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, aif1clk_ev,
113- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
114+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
115+ SND_SOC_DAPM_PRE_PMD),
116 SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, aif2clk_ev,
117- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
118+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
119+ SND_SOC_DAPM_PRE_PMD),
120 SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0),
121 SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0,
122 left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)),
123@@ -3486,39 +3537,11 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
124
125 wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
126
127- /* Latch volume updates (right only; we always do left then right). */
128- snd_soc_update_bits(codec, WM8994_AIF1_DAC1_LEFT_VOLUME,
129- WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);
130- snd_soc_update_bits(codec, WM8994_AIF1_DAC1_RIGHT_VOLUME,
131- WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);
132- snd_soc_update_bits(codec, WM8994_AIF1_DAC2_LEFT_VOLUME,
133- WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU);
134- snd_soc_update_bits(codec, WM8994_AIF1_DAC2_RIGHT_VOLUME,
135- WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU);
136- snd_soc_update_bits(codec, WM8994_AIF2_DAC_LEFT_VOLUME,
137- WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU);
138- snd_soc_update_bits(codec, WM8994_AIF2_DAC_RIGHT_VOLUME,
139- WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU);
140- snd_soc_update_bits(codec, WM8994_AIF1_ADC1_LEFT_VOLUME,
141- WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU);
142- snd_soc_update_bits(codec, WM8994_AIF1_ADC1_RIGHT_VOLUME,
143- WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU);
144- snd_soc_update_bits(codec, WM8994_AIF1_ADC2_LEFT_VOLUME,
145- WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU);
146- snd_soc_update_bits(codec, WM8994_AIF1_ADC2_RIGHT_VOLUME,
147- WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU);
148- snd_soc_update_bits(codec, WM8994_AIF2_ADC_LEFT_VOLUME,
149- WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU);
150- snd_soc_update_bits(codec, WM8994_AIF2_ADC_RIGHT_VOLUME,
151- WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU);
152- snd_soc_update_bits(codec, WM8994_DAC1_LEFT_VOLUME,
153- WM8994_DAC1_VU, WM8994_DAC1_VU);
154- snd_soc_update_bits(codec, WM8994_DAC1_RIGHT_VOLUME,
155- WM8994_DAC1_VU, WM8994_DAC1_VU);
156- snd_soc_update_bits(codec, WM8994_DAC2_LEFT_VOLUME,
157- WM8994_DAC2_VU, WM8994_DAC2_VU);
158- snd_soc_update_bits(codec, WM8994_DAC2_RIGHT_VOLUME,
159- WM8994_DAC2_VU, WM8994_DAC2_VU);
160+ /* Latch volume update bits */
161+ for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
162+ snd_soc_update_bits(codec, wm8994_vu_bits[i].reg,
163+ wm8994_vu_bits[i].mask,
164+ wm8994_vu_bits[i].mask);
165
166 /* Set the low bit of the 3D stereo depth so TLV matches */
167 snd_soc_update_bits(codec, WM8994_AIF1_DAC1_FILTERS_2,
168--
1691.7.9.5
170
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch
new file mode 100644
index 00000000..51d633ba
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch
@@ -0,0 +1,35 @@
1From 95f7667f3af2005c125446c8a5d59f60a4d05ad7 Mon Sep 17 00:00:00 2001
2From: Johannes Berg <johannes.berg@intel.com>
3Date: Tue, 5 Jun 2012 09:38:35 +0200
4Subject: [PATCH 31/67] iwlwifi: unregister LEDs if mac80211 registration
5 fails
6
7commit 0e1fa7ef25004b9c1a14147bce61c15c2f1c6744 upstream.
8
9Otherwise the LEDs stick around and cause issues the
10next time around since they're still there but not
11really hooked up.
12
13Signed-off-by: Johannes Berg <johannes.berg@intel.com>
14Signed-off-by: John W. Linville <linville@tuxdriver.com>
15[bwh: Backported to 3.2: adjust filename]
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/net/wireless/iwlwifi/iwl-agn.c | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
22index 8b88e87..16cdd12 100644
23--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
24+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
25@@ -1741,6 +1741,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv,
26 ret = ieee80211_register_hw(priv->hw);
27 if (ret) {
28 IWL_ERR(priv, "Failed to register hw (error %d)\n", ret);
29+ iwl_leds_exit(priv);
30 return ret;
31 }
32 priv->mac80211_registered = 1;
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch
new file mode 100644
index 00000000..fd32445e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch
@@ -0,0 +1,81 @@
1From 5b6e7b80e2a121632158da46a21f6be9d561ce8c Mon Sep 17 00:00:00 2001
2From: Johannes Berg <johannes.berg@intel.com>
3Date: Tue, 5 Jun 2012 12:16:50 +0200
4Subject: [PATCH 32/67] cfg80211: fix interface combinations check
5
6commit 463454b5dbd8dbab6e2fc6c557329e5b811b9c32 upstream.
7
8If a given interface combination doesn't contain
9a required interface type then we missed checking
10that and erroneously allowed it even though iface
11type wasn't there at all. Add a check that makes
12sure that all interface types are accounted for.
13
14Reported-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
15Signed-off-by: Johannes Berg <johannes.berg@intel.com>
16Signed-off-by: John W. Linville <linville@tuxdriver.com>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 net/wireless/util.c | 19 ++++++++++++++++++-
20 1 file changed, 18 insertions(+), 1 deletion(-)
21
22diff --git a/net/wireless/util.c b/net/wireless/util.c
23index 8bf8902..d38815d 100644
24--- a/net/wireless/util.c
25+++ b/net/wireless/util.c
26@@ -943,6 +943,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
27 enum nl80211_iftype iftype)
28 {
29 struct wireless_dev *wdev_iter;
30+ u32 used_iftypes = BIT(iftype);
31 int num[NUM_NL80211_IFTYPES];
32 int total = 1;
33 int i, j;
34@@ -976,12 +977,14 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
35
36 num[wdev_iter->iftype]++;
37 total++;
38+ used_iftypes |= BIT(wdev_iter->iftype);
39 }
40 mutex_unlock(&rdev->devlist_mtx);
41
42 for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
43 const struct ieee80211_iface_combination *c;
44 struct ieee80211_iface_limit *limits;
45+ u32 all_iftypes = 0;
46
47 c = &rdev->wiphy.iface_combinations[i];
48
49@@ -996,6 +999,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
50 if (rdev->wiphy.software_iftypes & BIT(iftype))
51 continue;
52 for (j = 0; j < c->n_limits; j++) {
53+ all_iftypes |= limits[j].types;
54 if (!(limits[j].types & BIT(iftype)))
55 continue;
56 if (limits[j].max < num[iftype])
57@@ -1003,7 +1007,20 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
58 limits[j].max -= num[iftype];
59 }
60 }
61- /* yay, it fits */
62+
63+ /*
64+ * Finally check that all iftypes that we're currently
65+ * using are actually part of this combination. If they
66+ * aren't then we can't use this combination and have
67+ * to continue to the next.
68+ */
69+ if ((all_iftypes & used_iftypes) != used_iftypes)
70+ goto cont;
71+
72+ /*
73+ * This combination covered all interface types and
74+ * supported the requested numbers, so we're good.
75+ */
76 kfree(limits);
77 return 0;
78 cont:
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch
new file mode 100644
index 00000000..d51719d4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch
@@ -0,0 +1,36 @@
1From 3c997939218ed3d4fec3441eaea74d04392d2007 Mon Sep 17 00:00:00 2001
2From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com>
3Date: Tue, 17 Apr 2012 11:25:04 +0530
4Subject: [PATCH 33/67] mpt2sas: Fix unsafe using smp_processor_id() in
5 preemptible
6
7commit a2c658505bf5c75516ee0a79287223e86a2474af upstream.
8
9When CONFIG_DEBUG_PREEMPT is enabled, bug is observed in the smp_processor_id().
10This is because smp_processor_id() is not called in preempt safe condition.
11
12To fix this issue, use raw_smp_processor_id instead of smp_processor_id.
13
14Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
15Signed-off-by: James Bottomley <JBottomley@Parallels.com>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/scsi/mpt2sas/mpt2sas_base.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
22index ac336e1..e903077 100644
23--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
24+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
25@@ -1739,7 +1739,7 @@ static inline void _base_writeq(__u64 b, volatile void __iomem *addr,
26 static inline u8
27 _base_get_msix_index(struct MPT2SAS_ADAPTER *ioc)
28 {
29- return ioc->cpu_msix_table[smp_processor_id()];
30+ return ioc->cpu_msix_table[raw_smp_processor_id()];
31 }
32
33 /**
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch
new file mode 100644
index 00000000..797282b7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch
@@ -0,0 +1,70 @@
1From a6d6029227b3b65257a974953df957d28ea190e7 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Tue, 5 Jun 2012 21:18:10 +0000
4Subject: [PATCH 34/67] net: sierra_net: device IDs for Aircard 320U++
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit dd03cff23d694cfb0fdae80cb618e7ced05ea696 upstream.
10
11Adding device IDs for Aircard 320U and two other devices
12found in the out-of-tree version of this driver.
13
14Cc: linux@sierrawireless.com
15Cc: Autif Khan <autif.mlist@gmail.com>
16Cc: Tom Cassidy <tomas.cassidy@gmail.com>
17Signed-off-by: Bjørn Mork <bjorn@mork.no>
18Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19Signed-off-by: David S. Miller <davem@davemloft.net>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 drivers/net/usb/sierra_net.c | 14 ++++++++++----
23 1 file changed, 10 insertions(+), 4 deletions(-)
24
25diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c
26index ed1b432..864448b 100644
27--- a/drivers/net/usb/sierra_net.c
28+++ b/drivers/net/usb/sierra_net.c
29@@ -943,7 +943,7 @@ struct sk_buff *sierra_net_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
30 }
31
32 static const u8 sierra_net_ifnum_list[] = { 7, 10, 11 };
33-static const struct sierra_net_info_data sierra_net_info_data_68A3 = {
34+static const struct sierra_net_info_data sierra_net_info_data_direct_ip = {
35 .rx_urb_size = 8 * 1024,
36 .whitelist = {
37 .infolen = ARRAY_SIZE(sierra_net_ifnum_list),
38@@ -951,7 +951,7 @@ static const struct sierra_net_info_data sierra_net_info_data_68A3 = {
39 }
40 };
41
42-static const struct driver_info sierra_net_info_68A3 = {
43+static const struct driver_info sierra_net_info_direct_ip = {
44 .description = "Sierra Wireless USB-to-WWAN Modem",
45 .flags = FLAG_WWAN | FLAG_SEND_ZLP,
46 .bind = sierra_net_bind,
47@@ -959,12 +959,18 @@ static const struct driver_info sierra_net_info_68A3 = {
48 .status = sierra_net_status,
49 .rx_fixup = sierra_net_rx_fixup,
50 .tx_fixup = sierra_net_tx_fixup,
51- .data = (unsigned long)&sierra_net_info_data_68A3,
52+ .data = (unsigned long)&sierra_net_info_data_direct_ip,
53 };
54
55 static const struct usb_device_id products[] = {
56 {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless USB-to-WWAN modem */
57- .driver_info = (unsigned long) &sierra_net_info_68A3},
58+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
59+ {USB_DEVICE(0x0F3D, 0x68A3), /* AT&T Direct IP modem */
60+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
61+ {USB_DEVICE(0x1199, 0x68AA), /* Sierra Wireless Direct IP LTE modem */
62+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
63+ {USB_DEVICE(0x0F3D, 0x68AA), /* AT&T Direct IP LTE modem */
64+ .driver_info = (unsigned long) &sierra_net_info_direct_ip},
65
66 {}, /* last item */
67 };
68--
691.7.9.5
70
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch
new file mode 100644
index 00000000..e14a5f36
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch
@@ -0,0 +1,98 @@
1From 863d8967cf0028dc6f7ca98d88f4e93045ec143e Mon Sep 17 00:00:00 2001
2From: Shawn Guo <shawn.guo@linaro.org>
3Date: Tue, 22 May 2012 22:13:46 +0800
4Subject: [PATCH 35/67] ARM: imx6: exit coherency when shutting down a cpu
5
6commit 602bf40971d7f9a1ec0b7ba2b7e6427849828651 upstream.
7
8There is a system hang issue on imx6q which can easily be seen with
9running a cpu hotplug stress testing (hotplug secondary cores from
10user space via sysfs interface for thousands iterations).
11
12It turns out that the issue is caused by coherency of the cpu that
13is being shut down. When shutting down a cpu, we need to have the
14cpu exit coherency to prevent it from receiving cache, TLB, or BTB
15maintenance operations broadcast by other CPUs in the cluster.
16
17Copy cpu_enter_lowpower() and cpu_leave_lowpower() from mach-vexpress
18to have coherency properly handled in platform_cpu_die(), thus fix
19the issue.
20
21Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 arch/arm/mach-imx/hotplug.c | 42 +++++++++++++++++++++++++++++++++++++++++-
25 1 file changed, 41 insertions(+), 1 deletion(-)
26
27diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c
28index 89493ab..20ed2d5 100644
29--- a/arch/arm/mach-imx/hotplug.c
30+++ b/arch/arm/mach-imx/hotplug.c
31@@ -12,6 +12,7 @@
32
33 #include <linux/errno.h>
34 #include <asm/cacheflush.h>
35+#include <asm/cp15.h>
36 #include <mach/common.h>
37
38 int platform_cpu_kill(unsigned int cpu)
39@@ -19,6 +20,44 @@ int platform_cpu_kill(unsigned int cpu)
40 return 1;
41 }
42
43+static inline void cpu_enter_lowpower(void)
44+{
45+ unsigned int v;
46+
47+ flush_cache_all();
48+ asm volatile(
49+ "mcr p15, 0, %1, c7, c5, 0\n"
50+ " mcr p15, 0, %1, c7, c10, 4\n"
51+ /*
52+ * Turn off coherency
53+ */
54+ " mrc p15, 0, %0, c1, c0, 1\n"
55+ " bic %0, %0, %3\n"
56+ " mcr p15, 0, %0, c1, c0, 1\n"
57+ " mrc p15, 0, %0, c1, c0, 0\n"
58+ " bic %0, %0, %2\n"
59+ " mcr p15, 0, %0, c1, c0, 0\n"
60+ : "=&r" (v)
61+ : "r" (0), "Ir" (CR_C), "Ir" (0x40)
62+ : "cc");
63+}
64+
65+static inline void cpu_leave_lowpower(void)
66+{
67+ unsigned int v;
68+
69+ asm volatile(
70+ "mrc p15, 0, %0, c1, c0, 0\n"
71+ " orr %0, %0, %1\n"
72+ " mcr p15, 0, %0, c1, c0, 0\n"
73+ " mrc p15, 0, %0, c1, c0, 1\n"
74+ " orr %0, %0, %2\n"
75+ " mcr p15, 0, %0, c1, c0, 1\n"
76+ : "=&r" (v)
77+ : "Ir" (CR_C), "Ir" (0x40)
78+ : "cc");
79+}
80+
81 /*
82 * platform-specific code to shutdown a CPU
83 *
84@@ -26,9 +65,10 @@ int platform_cpu_kill(unsigned int cpu)
85 */
86 void platform_cpu_die(unsigned int cpu)
87 {
88- flush_cache_all();
89+ cpu_enter_lowpower();
90 imx_enable_cpu(cpu, false);
91 cpu_do_idle();
92+ cpu_leave_lowpower();
93
94 /* We should never return from idle */
95 panic("cpu %d unexpectedly exit from shutdown\n", cpu);
96--
971.7.9.5
98
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch
new file mode 100644
index 00000000..e0f48f54
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch
@@ -0,0 +1,36 @@
1From b56e5718560c09bd064d57a3de17be1a329f2c65 Mon Sep 17 00:00:00 2001
2From: Jaccon Bastiaansen <jaccon.bastiaansen@gmail.com>
3Date: Mon, 30 Apr 2012 11:53:43 +0200
4Subject: [PATCH 36/67] ARM i.MX imx21ads: Fix overlapping static i/o mappings
5
6commit 350ab15bb2ffe7103bc6bf6c634f3c5b286eaf2a upstream.
7
8The statically defined I/O memory regions for the i.MX21 on chip
9peripherals and the on board I/O peripherals of the i.MX21ADS board
10overlap. This results in a kernel crash during startup. This is fixed
11by reducing the memory range for the on board I/O peripherals to the
12actually required range.
13
14Signed-off-by: Jaccon Bastiaansen <jaccon.bastiaansen@gmail.com>
15Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 arch/arm/mach-imx/mach-mx21ads.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
22index 25f8402..ad994b3 100644
23--- a/arch/arm/mach-imx/mach-mx21ads.c
24+++ b/arch/arm/mach-imx/mach-mx21ads.c
25@@ -32,7 +32,7 @@
26 * Memory-mapped I/O on MX21ADS base board
27 */
28 #define MX21ADS_MMIO_BASE_ADDR 0xf5000000
29-#define MX21ADS_MMIO_SIZE SZ_16M
30+#define MX21ADS_MMIO_SIZE 0xc00000
31
32 #define MX21ADS_REG_ADDR(offset) (void __force __iomem *) \
33 (MX21ADS_MMIO_BASE_ADDR + (offset))
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch
new file mode 100644
index 00000000..9f00f9f3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch
@@ -0,0 +1,39 @@
1From 2b0262efb8720c3199a4fc4c119de05df5957bbc Mon Sep 17 00:00:00 2001
2From: Trond Myklebust <Trond.Myklebust@netapp.com>
3Date: Fri, 8 Jun 2012 10:58:09 -0400
4Subject: [PATCH 37/67] NFSv4: Fix unnecessary delegation returns in
5 nfs4_do_open
6
7commit 2d0dbc6ae8a5194aaecb9cfffb9053f38fce8b86 upstream.
8
9While nfs4_do_open() expects the fmode argument to be restricted to
10combinations of FMODE_READ and FMODE_WRITE, both nfs4_atomic_open()
11and nfs4_proc_create will pass the nfs_open_context->mode,
12which contains the full fmode_t.
13
14This patch ensures that nfs4_do_open strips the other fmode_t bits,
15fixing a problem in which the nfs4_do_open call would result in an
16unnecessary delegation return.
17
18Reported-by: Fred Isaman <iisaman@netapp.com>
19Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21---
22 fs/nfs/nfs4proc.c | 1 +
23 1 file changed, 1 insertion(+)
24
25diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
26index a3cae5d..8000459 100644
27--- a/fs/nfs/nfs4proc.c
28+++ b/fs/nfs/nfs4proc.c
29@@ -1825,6 +1825,7 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry,
30 struct nfs4_state *res;
31 int status;
32
33+ fmode &= FMODE_READ|FMODE_WRITE;
34 do {
35 status = _nfs4_do_open(dir, dentry, fmode, flags, sattr, cred, &res);
36 if (status == 0)
37--
381.7.9.5
39
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch
new file mode 100644
index 00000000..0bc6aded
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch
@@ -0,0 +1,88 @@
1From f4ef6f3f77fa0419a906d75f96c4dea111956872 Mon Sep 17 00:00:00 2001
2From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
3Date: Tue, 5 Jun 2012 20:24:37 +0200
4Subject: [PATCH 38/67] iwlwifi: use correct supported firmware for 6035 and
5 6000g2
6
7commit d2c8b15d0cb486f4938ba7f2af349d9d1220cb10 upstream.
8
9My patch
10
11 iwlwifi: use correct released ucode version
12
13did not correctly report supported firmware
14for the 6035 device. This patch fixes it. The
15minimum supported firmware version for 6035
16is v6.
17
18Also correct the minimum supported firmware
19version for the 6000g2 series of devices.
20
21Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
22Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
23Signed-off-by: Johannes Berg <johannes.berg@intel.com>
24Signed-off-by: John W. Linville <linville@tuxdriver.com>
25[bwh: Backported to 3.2:
26 - adjust context
27 - make IWL_DEVICE_6035 identical for IWL_DEVICE_6030 except for the
28 ucode_api_* fields]
29Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
30---
31 drivers/net/wireless/iwlwifi/iwl-6000.c | 22 ++++++++++++++++++++--
32 1 file changed, 20 insertions(+), 2 deletions(-)
33
34diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
35index 0b9f797..9b6b010 100644
36--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
37+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
38@@ -49,17 +49,20 @@
39 #define IWL6000_UCODE_API_MAX 6
40 #define IWL6050_UCODE_API_MAX 5
41 #define IWL6000G2_UCODE_API_MAX 6
42+#define IWL6035_UCODE_API_MAX 6
43
44 /* Oldest version we won't warn about */
45 #define IWL6000_UCODE_API_OK 4
46 #define IWL6000G2_UCODE_API_OK 5
47 #define IWL6050_UCODE_API_OK 5
48 #define IWL6000G2B_UCODE_API_OK 6
49+#define IWL6035_UCODE_API_OK 6
50
51 /* Lowest firmware API version supported */
52 #define IWL6000_UCODE_API_MIN 4
53 #define IWL6050_UCODE_API_MIN 4
54-#define IWL6000G2_UCODE_API_MIN 4
55+#define IWL6000G2_UCODE_API_MIN 5
56+#define IWL6035_UCODE_API_MIN 6
57
58 #define IWL6000_FW_PRE "iwlwifi-6000-"
59 #define IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE __stringify(api) ".ucode"
60@@ -436,9 +439,24 @@ struct iwl_cfg iwl6030_2bg_cfg = {
61 IWL_DEVICE_6030,
62 };
63
64+#define IWL_DEVICE_6035 \
65+ .fw_name_pre = IWL6030_FW_PRE, \
66+ .ucode_api_max = IWL6035_UCODE_API_MAX, \
67+ .ucode_api_ok = IWL6035_UCODE_API_OK, \
68+ .ucode_api_min = IWL6035_UCODE_API_MIN, \
69+ .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \
70+ .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \
71+ .lib = &iwl6030_lib, \
72+ .base_params = &iwl6000_g2_base_params, \
73+ .bt_params = &iwl6000_bt_params, \
74+ .need_dc_calib = true, \
75+ .need_temp_offset_calib = true, \
76+ .led_mode = IWL_LED_RF_STATE, \
77+ .adv_pm = true
78+
79 struct iwl_cfg iwl6035_2agn_cfg = {
80 .name = "6035 Series 2x2 AGN/BT",
81- IWL_DEVICE_6030,
82+ IWL_DEVICE_6035,
83 .ht_params = &iwl6000_ht_params,
84 };
85
86--
871.7.9.5
88
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch
new file mode 100644
index 00000000..e13734be
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch
@@ -0,0 +1,52 @@
1From 0011758ae1822920fd9c6bcd18cafb780971a7b3 Mon Sep 17 00:00:00 2001
2From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3Date: Wed, 6 Jun 2012 13:55:02 +0200
4Subject: [PATCH 39/67] iwlwifi: disable the buggy chain extension feature in
5 HW
6
7commit d012d04e4d6312ea157b6cf19e9689af934f5aa7 upstream.
8
9This feature has been reported to be buggy and enabled by
10default. We therefore need to disable it manually.
11
12Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
13Signed-off-by: Johannes Berg <johannes.berg@intel.com>
14Signed-off-by: John W. Linville <linville@tuxdriver.com>
15[bwh: Backported to 3.2 as instructed: pass bus(trans) to iwl_write_prph()]
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/net/wireless/iwlwifi/iwl-prph.h | 1 +
19 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 5 +++++
20 2 files changed, 6 insertions(+)
21
22diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h
23index d9b089e..0683006 100644
24--- a/drivers/net/wireless/iwlwifi/iwl-prph.h
25+++ b/drivers/net/wireless/iwlwifi/iwl-prph.h
26@@ -228,6 +228,7 @@
27 #define SCD_TXFACT (SCD_BASE + 0x10)
28 #define SCD_ACTIVE (SCD_BASE + 0x14)
29 #define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8)
30+#define SCD_CHAINEXT_EN (SCD_BASE + 0x244)
31 #define SCD_AGGR_SEL (SCD_BASE + 0x248)
32 #define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
33
34diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
35index 5f17ab8..5815cf5 100644
36--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
37+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
38@@ -868,6 +868,11 @@ static void iwl_trans_pcie_tx_start(struct iwl_trans *trans)
39 iwl_write_prph(bus(trans), SCD_DRAM_BASE_ADDR,
40 trans_pcie->scd_bc_tbls.dma >> 10);
41
42+ /* The chain extension of the SCD doesn't work well. This feature is
43+ * enabled by default by the HW, so we need to disable it manually.
44+ */
45+ iwl_write_prph(bus(trans), SCD_CHAINEXT_EN, 0);
46+
47 /* Enable DMA channel */
48 for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++)
49 iwl_write_direct32(bus(trans), FH_TCSR_CHNL_TX_CONFIG_REG(chan),
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch
new file mode 100644
index 00000000..619df983
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch
@@ -0,0 +1,47 @@
1From 6b9a3be3e496ccc4125e0c6daded90e823864642 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Mon, 13 Feb 2012 11:55:02 +0100
4Subject: [PATCH 40/67] ALSA: hda - Add codec->no_jack_detect flag
5
6commit 71b1e9e43d5199f57c109e20c0f4dffc5c048130 upstream.
7
8Add a new flag to indicate that the codec has no jack-detection cap.
9This flag should be set for hardwares that have no jack-detect
10implementation although the codec chip itself supports it.
11
12Signed-off-by: Takashi Iwai <tiwai@suse.de>
13[bwh: Backported to 3.2: adjust filename and context for is_jack_detectable()]
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 sound/pci/hda/hda_codec.h | 1 +
17 sound/pci/hda/hda_local.h | 2 ++
18 2 files changed, 3 insertions(+)
19
20diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
21index 71f6744..78b2223 100644
22--- a/sound/pci/hda/hda_codec.h
23+++ b/sound/pci/hda/hda_codec.h
24@@ -858,6 +858,7 @@ struct hda_codec {
25 unsigned int pins_shutup:1; /* pins are shut up */
26 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
27 unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
28+ unsigned int no_jack_detect:1; /* Machine has no jack-detection */
29 #ifdef CONFIG_SND_HDA_POWER_SAVE
30 unsigned int power_on :1; /* current (global) power-state */
31 unsigned int power_transition :1; /* power-state in transition */
32diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
33index 368f0c5..c78b753 100644
34--- a/sound/pci/hda/hda_local.h
35+++ b/sound/pci/hda/hda_local.h
36@@ -515,6 +515,8 @@ int snd_hda_jack_detect(struct hda_codec *codec, hda_nid_t nid);
37
38 static inline bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
39 {
40+ if (codec->no_jack_detect)
41+ return false;
42 if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT))
43 return false;
44 if (!codec->ignore_misc_bit &&
45--
461.7.9.5
47
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch
new file mode 100644
index 00000000..f040ea2f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch
@@ -0,0 +1,32 @@
1From 0c29db802dc506ead06e7fac2b2d4d139e818ae3 Mon Sep 17 00:00:00 2001
2From: Jaroslav Kysela <perex@perex.cz>
3Date: Tue, 7 Feb 2012 14:18:14 +0100
4Subject: [PATCH 41/67] ALSA: hda - add support for Uniwill ECS M31EI notebook
5
6commit 416846d2b31fc740ed9d5a5ec116964fb43c4358 upstream.
7
8This hardware requires same fixup for the node 0x0f like Asus A6Rp.
9More information: https://bugzilla.redhat.com/show_bug.cgi?id=785417
10
11Signed-off-by: Jaroslav Kysela <perex@perex.cz>
12Signed-off-by: Takashi Iwai <tiwai@suse.de>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 sound/pci/hda/patch_realtek.c | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
19index 0bc5a46..7d304af 100644
20--- a/sound/pci/hda/patch_realtek.c
21+++ b/sound/pci/hda/patch_realtek.c
22@@ -5318,6 +5318,7 @@ static const struct alc_fixup alc861_fixups[] = {
23
24 static const struct snd_pci_quirk alc861_fixup_tbl[] = {
25 SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
26+ SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP),
27 SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
28 SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
29 {}
30--
311.7.9.5
32
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch
new file mode 100644
index 00000000..588a0ede
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch
@@ -0,0 +1,93 @@
1From bc9c3f7a38a28cba8ad0455548f064a81a8c9a69 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Mon, 13 Feb 2012 11:56:25 +0100
4Subject: [PATCH 42/67] ALSA: hda - Suppress auto-mute feature on some
5 machines with ALC861
6
7commit e652f4c861fb7f1f59ff0828db0d85578471932d upstream.
8
9A few machines with ALC861 & co are reported not to work properly with
10the auto-mute feature in software. The auto-mute feature is implemented
11in the hardware level, and the jack-detection never works with them.
12
13Also, rename the fixup index as ALC861_FIXUP_* to follow the standard.
14
15Signed-off-by: Takashi Iwai <tiwai@suse.de>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 sound/pci/hda/patch_realtek.c | 38 ++++++++++++++++++++++++++++++--------
19 1 file changed, 30 insertions(+), 8 deletions(-)
20
21diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
22index 7d304af..d4616fb 100644
23--- a/sound/pci/hda/patch_realtek.c
24+++ b/sound/pci/hda/patch_realtek.c
25@@ -5278,8 +5278,10 @@ static const struct hda_amp_list alc861_loopbacks[] = {
26
27 /* Pin config fixes */
28 enum {
29- PINFIX_FSC_AMILO_PI1505,
30- PINFIX_ASUS_A6RP,
31+ ALC861_FIXUP_FSC_AMILO_PI1505,
32+ ALC861_FIXUP_AMP_VREF_0F,
33+ ALC861_FIXUP_NO_JACK_DETECT,
34+ ALC861_FIXUP_ASUS_A6RP,
35 };
36
37 /* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
38@@ -5301,8 +5303,16 @@ static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec,
39 spec->keep_vref_in_automute = 1;
40 }
41
42+/* suppress the jack-detection */
43+static void alc_fixup_no_jack_detect(struct hda_codec *codec,
44+ const struct alc_fixup *fix, int action)
45+{
46+ if (action == ALC_FIXUP_ACT_PRE_PROBE)
47+ codec->no_jack_detect = 1;
48+}
49+
50 static const struct alc_fixup alc861_fixups[] = {
51- [PINFIX_FSC_AMILO_PI1505] = {
52+ [ALC861_FIXUP_FSC_AMILO_PI1505] = {
53 .type = ALC_FIXUP_PINS,
54 .v.pins = (const struct alc_pincfg[]) {
55 { 0x0b, 0x0221101f }, /* HP */
56@@ -5310,17 +5320,29 @@ static const struct alc_fixup alc861_fixups[] = {
57 { }
58 }
59 },
60- [PINFIX_ASUS_A6RP] = {
61+ [ALC861_FIXUP_AMP_VREF_0F] = {
62 .type = ALC_FIXUP_FUNC,
63 .v.func = alc861_fixup_asus_amp_vref_0f,
64 },
65+ [ALC861_FIXUP_NO_JACK_DETECT] = {
66+ .type = ALC_FIXUP_FUNC,
67+ .v.func = alc_fixup_no_jack_detect,
68+ },
69+ [ALC861_FIXUP_ASUS_A6RP] = {
70+ .type = ALC_FIXUP_FUNC,
71+ .v.func = alc861_fixup_asus_amp_vref_0f,
72+ .chained = true,
73+ .chain_id = ALC861_FIXUP_NO_JACK_DETECT,
74+ }
75 };
76
77 static const struct snd_pci_quirk alc861_fixup_tbl[] = {
78- SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
79- SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP),
80- SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
81- SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
82+ SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP),
83+ SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F),
84+ SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT),
85+ SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", ALC861_FIXUP_AMP_VREF_0F),
86+ SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", ALC861_FIXUP_AMP_VREF_0F),
87+ SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", ALC861_FIXUP_FSC_AMILO_PI1505),
88 {}
89 };
90
91--
921.7.9.5
93
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch
new file mode 100644
index 00000000..bfbb1485
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch
@@ -0,0 +1,52 @@
1From 5dadca9a4cd269970d942d9e235320f30c425b31 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Mon, 13 Feb 2012 12:03:25 +0100
4Subject: [PATCH 43/67] ALSA: hda - Add another jack-detection suppression for
5 ASUS ALC892
6
7commit 1565cc358585be40608b46f18f7ac431a1aae2bc upstream.
8
9Add the jack-detect suppression for an ASUS machine with ALC892 codec.
10
11Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42655
12
13Signed-off-by: Takashi Iwai <tiwai@suse.de>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 sound/pci/hda/patch_realtek.c | 6 ++++++
17 1 file changed, 6 insertions(+)
18
19diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
20index d4616fb..ba8a877 100644
21--- a/sound/pci/hda/patch_realtek.c
22+++ b/sound/pci/hda/patch_realtek.c
23@@ -5594,6 +5594,7 @@ enum {
24 ALC662_FIXUP_ASUS_MODE6,
25 ALC662_FIXUP_ASUS_MODE7,
26 ALC662_FIXUP_ASUS_MODE8,
27+ ALC662_FIXUP_NO_JACK_DETECT,
28 };
29
30 static const struct alc_fixup alc662_fixups[] = {
31@@ -5739,6 +5740,10 @@ static const struct alc_fixup alc662_fixups[] = {
32 .chained = true,
33 .chain_id = ALC662_FIXUP_SKU_IGNORE
34 },
35+ [ALC662_FIXUP_NO_JACK_DETECT] = {
36+ .type = ALC_FIXUP_FUNC,
37+ .v.func = alc_fixup_no_jack_detect,
38+ },
39 };
40
41 static const struct snd_pci_quirk alc662_fixup_tbl[] = {
42@@ -5747,6 +5752,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
43 SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE),
44 SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE),
45 SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800),
46+ SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT),
47 SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_FIXUP_ASUS_MODE2),
48 SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
49 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
50--
511.7.9.5
52
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch
new file mode 100644
index 00000000..925129a7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch
@@ -0,0 +1,56 @@
1From 733c9de011d1599e23402465b1bd33730bee4fc1 Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com>
3Date: Tue, 12 Jun 2012 13:15:12 +0200
4Subject: [PATCH 44/67] ALSA: HDA: Pin fixup for Zotac Z68 motherboard
5
6commit edfe3bfc1b779ddda9bcff523eb022dda37b93c8 upstream.
7
8Pin 0x1b was connected to the front panel connector, which according to
9the HDA standard should contain a mic and a headphone. In this case,
10the headphone was listed as "line out" by BIOS.
11
12BugLink: https://bugs.launchpad.net/bugs/993162
13Signed-off-by: David Henningsson <david.henningsson@canonical.com>
14Signed-off-by: Takashi Iwai <tiwai@suse.de>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 sound/pci/hda/patch_realtek.c | 9 +++++++++
18 1 file changed, 9 insertions(+)
19
20diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
21index ba8a877..0005bde 100644
22--- a/sound/pci/hda/patch_realtek.c
23+++ b/sound/pci/hda/patch_realtek.c
24@@ -5595,6 +5595,7 @@ enum {
25 ALC662_FIXUP_ASUS_MODE7,
26 ALC662_FIXUP_ASUS_MODE8,
27 ALC662_FIXUP_NO_JACK_DETECT,
28+ ALC662_FIXUP_ZOTAC_Z68,
29 };
30
31 static const struct alc_fixup alc662_fixups[] = {
32@@ -5744,6 +5745,13 @@ static const struct alc_fixup alc662_fixups[] = {
33 .type = ALC_FIXUP_FUNC,
34 .v.func = alc_fixup_no_jack_detect,
35 },
36+ [ALC662_FIXUP_ZOTAC_Z68] = {
37+ .type = ALC_FIXUP_PINS,
38+ .v.pins = (const struct alc_pincfg[]) {
39+ { 0x1b, 0x02214020 }, /* Front HP */
40+ { }
41+ }
42+ },
43 };
44
45 static const struct snd_pci_quirk alc662_fixup_tbl[] = {
46@@ -5757,6 +5765,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
47 SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
48 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
49 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
50+ SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
51 SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
52
53 #if 0
54--
551.7.9.5
56
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch
new file mode 100644
index 00000000..940c4599
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch
@@ -0,0 +1,68 @@
1From 4b2cda453ae678e21afaa8d35cb77d670239e9cb Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Wed, 25 Jan 2012 13:03:29 +0100
4Subject: [PATCH 45/67] usb: cdc-wdm: Add device-id for Huawei 3G/LTE modems
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit fec67b45bf045582c3172101970090d640cd56d9 upstream.
10
11[v2: Editorial changes suggested by Sergei Shtylyov]
12
13These modems use the Qualcomm MSM Interface (QMI) protocol for
14management of their CDC ECM like wwan interface. This driver
15is perfect for exporting the protocol to userspace.
16
17The created character device will be indistinguishable from a
18common AT command based Device Management interface, so
19userspace applications must do some intelligent matching
20on the USB device.
21
22Cc: Sergei Shtylyov <sshtylyov@mvista.com>
23Signed-off-by: Bjørn Mork <bjorn@mork.no>
24Acked-by: Oliver Neukum <oneukum@suse.de>
25Acked-by: Marcel Holtmann <marcel@holtmann.org>
26Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
27Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
28---
29 drivers/usb/class/cdc-wdm.c | 16 ++++++++++++++++
30 1 file changed, 16 insertions(+)
31
32diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
33index 554ac90..19fb5fa 100644
34--- a/drivers/usb/class/cdc-wdm.c
35+++ b/drivers/usb/class/cdc-wdm.c
36@@ -31,6 +31,8 @@
37 #define DRIVER_AUTHOR "Oliver Neukum"
38 #define DRIVER_DESC "USB Abstract Control Model driver for USB WCM Device Management"
39
40+#define HUAWEI_VENDOR_ID 0x12D1
41+
42 static const struct usb_device_id wdm_ids[] = {
43 {
44 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
45@@ -38,6 +40,20 @@ static const struct usb_device_id wdm_ids[] = {
46 .bInterfaceClass = USB_CLASS_COMM,
47 .bInterfaceSubClass = USB_CDC_SUBCLASS_DMM
48 },
49+ {
50+ /*
51+ * Huawei E392, E398 and possibly other Qualcomm based modems
52+ * embed the Qualcomm QMI protocol inside CDC on CDC ECM like
53+ * control interfaces. Userspace access to this is required
54+ * to configure the accompanying data interface
55+ */
56+ .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
57+ USB_DEVICE_ID_MATCH_INT_INFO,
58+ .idVendor = HUAWEI_VENDOR_ID,
59+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
60+ .bInterfaceSubClass = 1,
61+ .bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */
62+ },
63 { }
64 };
65
66--
671.7.9.5
68
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch
new file mode 100644
index 00000000..954ac8cc
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch
@@ -0,0 +1,41 @@
1From 1fc193abca612fd776509b13f114254443d79300 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Thu, 24 May 2012 11:19:04 +0200
4Subject: [PATCH 46/67] USB: qcserial: Add Sierra Wireless device IDs
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit c41444ccfa33a1c20efa319e554cb531576e64a2 upstream.
10
11Some additional IDs found in the BSD/GPL licensed out-of-tree
12GobiSerial driver from Sierra Wireless.
13
14Signed-off-by: Bjørn Mork <bjorn@mork.no>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/usb/serial/qcserial.c | 6 ++++++
19 1 file changed, 6 insertions(+)
20
21diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
22index 3187d8b..6634477 100644
23--- a/drivers/usb/serial/qcserial.c
24+++ b/drivers/usb/serial/qcserial.c
25@@ -105,7 +105,13 @@ static const struct usb_device_id id_table[] = {
26 {USB_DEVICE(0x1410, 0xa021)}, /* Novatel Gobi 3000 Composite */
27 {USB_DEVICE(0x413c, 0x8193)}, /* Dell Gobi 3000 QDL */
28 {USB_DEVICE(0x413c, 0x8194)}, /* Dell Gobi 3000 Composite */
29+ {USB_DEVICE(0x1199, 0x9010)}, /* Sierra Wireless Gobi 3000 QDL */
30+ {USB_DEVICE(0x1199, 0x9012)}, /* Sierra Wireless Gobi 3000 QDL */
31 {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
32+ {USB_DEVICE(0x1199, 0x9014)}, /* Sierra Wireless Gobi 3000 QDL */
33+ {USB_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */
34+ {USB_DEVICE(0x1199, 0x9018)}, /* Sierra Wireless Gobi 3000 QDL */
35+ {USB_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */
36 {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */
37 {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */
38 { } /* Terminating entry */
39--
401.7.9.5
41
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch
new file mode 100644
index 00000000..7d101e20
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch
@@ -0,0 +1,48 @@
1From 4303646551b97b4a9d0dfe195a85a32840e920b6 Mon Sep 17 00:00:00 2001
2From: Evan McNabb <evan@mcnabbs.org>
3Date: Fri, 25 May 2012 22:46:14 -0400
4Subject: [PATCH 47/67] USB: ftdi-sio: Add support for RT Systems USB-RTS01
5 serial adapter
6
7commit e00a54d772210d450e5c1a801534c3c8a448549f upstream.
8
9Add support for RT Systems USB-RTS01 USB to Serial adapter:
10http://www.rtsystemsinc.com/Photos/USBRTS01.html
11
12Tested by controlling Icom IC-718 amateur radio transceiver via hamlib.
13
14Signed-off-by: Evan McNabb <evan@mcnabbs.org>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/usb/serial/ftdi_sio.c | 1 +
19 drivers/usb/serial/ftdi_sio_ids.h | 1 +
20 2 files changed, 2 insertions(+)
21
22diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
23index 450bdfe..4045e39 100644
24--- a/drivers/usb/serial/ftdi_sio.c
25+++ b/drivers/usb/serial/ftdi_sio.c
26@@ -737,6 +737,7 @@ static struct usb_device_id id_table_combined [] = {
27 { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
28 { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) },
29 { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) },
30+ { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_RTS01_PID) },
31 { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) },
32 { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) },
33 { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
34diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
35index 219b199..d27d7d7 100644
36--- a/drivers/usb/serial/ftdi_sio_ids.h
37+++ b/drivers/usb/serial/ftdi_sio_ids.h
38@@ -784,6 +784,7 @@
39 #define RTSYSTEMS_VID 0x2100 /* Vendor ID */
40 #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */
41 #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */
42+#define RTSYSTEMS_RTS01_PID 0x9e57 /* USB-RTS01 Radio Cable */
43
44
45 /*
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch
new file mode 100644
index 00000000..276c6406
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch
@@ -0,0 +1,29 @@
1From e7e29e6887d233e82b4dae59804228688370bcfa Mon Sep 17 00:00:00 2001
2From: Mikko Tuumanen <mikko.tuumanen@qemsoftware.com>
3Date: Fri, 1 Jun 2012 11:28:55 +0300
4Subject: [PATCH 48/67] USB: serial: cp210x: add Optris MS Pro usb id
5
6commit 5bbfa6f427c1d7244a5ee154ab8fa37265a5e049 upstream.
7
8Signed-off-by: Mikko Tuumanen <mikko.tuumanen@qemsoftware.com>
9Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
11---
12 drivers/usb/serial/cp210x.c | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
16index f2c57e0..aa0c43f 100644
17--- a/drivers/usb/serial/cp210x.c
18+++ b/drivers/usb/serial/cp210x.c
19@@ -82,6 +82,7 @@ static const struct usb_device_id id_table[] = {
20 { USB_DEVICE(0x10C4, 0x8066) }, /* Argussoft In-System Programmer */
21 { USB_DEVICE(0x10C4, 0x806F) }, /* IMS USB to RS422 Converter Cable */
22 { USB_DEVICE(0x10C4, 0x807A) }, /* Crumb128 board */
23+ { USB_DEVICE(0x10C4, 0x80C4) }, /* Cygnal Integrated Products, Inc., Optris infrared thermometer */
24 { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
25 { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
26 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
27--
281.7.9.5
29
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch
new file mode 100644
index 00000000..29323338
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch
@@ -0,0 +1,35 @@
1From 73b49603c6b6e058eeff4bea1866156fd35847d1 Mon Sep 17 00:00:00 2001
2From: Tom Cassidy <tomas.cassidy@gmail.com>
3Date: Wed, 6 Jun 2012 17:08:48 +1000
4Subject: [PATCH 49/67] USB: serial: sierra: Add support for Sierra Wireless
5 AirCard 320U modem
6
7commit 19a3dd1575e954e8c004413bee3e12d3962f2525 upstream.
8
9Add support for Sierra Wireless AirCard 320U modem
10
11Signed-off-by: Tomas Cassidy <tomas.cassidy@gmail.com>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
14---
15 drivers/usb/serial/sierra.c | 4 ++++
16 1 file changed, 4 insertions(+)
17
18diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
19index e093585..535d087 100644
20--- a/drivers/usb/serial/sierra.c
21+++ b/drivers/usb/serial/sierra.c
22@@ -304,6 +304,10 @@ static const struct usb_device_id id_table[] = {
23 { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */
24 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
25 },
26+ /* AT&T Direct IP LTE modems */
27+ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF),
28+ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
29+ },
30 { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */
31 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
32 },
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch
new file mode 100644
index 00000000..0685a5cf
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch
@@ -0,0 +1,36 @@
1From 547f4fcdd71718e4522557b1d9210d11ef00d17e Mon Sep 17 00:00:00 2001
2From: Andrew Bird <ajb@spheresystems.co.uk>
3Date: Mon, 28 May 2012 12:43:06 +0100
4Subject: [PATCH 50/67] USB: option: Updated Huawei K4605 has better id
5
6commit 42ca7da1c2363dbef4ba1b6917c4c02274b6a5e2 upstream.
7
8Later firmwares for this device now have proper subclass and
9protocol info so we can identify it nicely without needing to use
10the blacklist. I'm not removing the old 0xff matching as there
11may be devices in the field that still need that.
12
13Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15[bwh: Backported to 3.2: adjust context]
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/usb/serial/option.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
22index cbe3451..ef57b1e 100644
23--- a/drivers/usb/serial/option.c
24+++ b/drivers/usb/serial/option.c
25@@ -666,6 +666,8 @@ static const struct usb_device_id option_ids[] = {
26 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) },
27 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff),
28 .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
29+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) },
30+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) },
31 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
32 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
33 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch
new file mode 100644
index 00000000..3c0c6a49
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch
@@ -0,0 +1,48 @@
1From 1c51f7fd275092f5a0aa6063a04711bc5d0a2ede Mon Sep 17 00:00:00 2001
2From: Alan Cox <alan@linux.intel.com>
3Date: Tue, 22 May 2012 20:45:13 +0100
4Subject: [PATCH 51/67] USB: mct_u232: Fix incorrect TIOCMSET return
5
6commit 1aa3c63cf0a79153ee13c8f82e4eb6c40b66a161 upstream.
7
8The low level helper returns 1 on success. The ioctl should however return
90. As this is the only user of the helper return, make the helper return 0 or
10an error code.
11
12Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43009
13Signed-off-by: Alan Cox <alan@linux.intel.com>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/usb/serial/mct_u232.c | 13 ++++++++-----
18 1 file changed, 8 insertions(+), 5 deletions(-)
19
20diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
21index ba0d287..42de17b 100644
22--- a/drivers/usb/serial/mct_u232.c
23+++ b/drivers/usb/serial/mct_u232.c
24@@ -359,13 +359,16 @@ static int mct_u232_set_modem_ctrl(struct usb_serial *serial,
25 MCT_U232_SET_REQUEST_TYPE,
26 0, 0, buf, MCT_U232_SET_MODEM_CTRL_SIZE,
27 WDR_TIMEOUT);
28- if (rc < 0)
29- dev_err(&serial->dev->dev,
30- "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
31+ kfree(buf);
32+
33 dbg("set_modem_ctrl: state=0x%x ==> mcr=0x%x", control_state, mcr);
34
35- kfree(buf);
36- return rc;
37+ if (rc < 0) {
38+ dev_err(&serial->dev->dev,
39+ "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
40+ return rc;
41+ }
42+ return 0;
43 } /* mct_u232_set_modem_ctrl */
44
45 static int mct_u232_get_modem_stat(struct usb_serial *serial,
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch
new file mode 100644
index 00000000..7e8970a5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch
@@ -0,0 +1,81 @@
1From 34491f4f5c53bc499adfe6eec7c146592f295bed Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Tue, 29 May 2012 17:57:52 +0200
4Subject: [PATCH 52/67] USB: option: fix port-data abuse
5
6commit 4273f9878b0a8271df055e3c8f2e7f08c6a4a2f4 upstream.
7
8Commit 8b4c6a3ab596961b78465 ("USB: option: Use generic USB wwan code")
9moved option port-data allocation to usb_wwan_startup but still cast the
10port data to the old struct...
11
12Signed-off-by: Johan Hovold <jhovold@gmail.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14[bwh: Backported to 3.2: adjust context]
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/usb/serial/option.c | 34 +++-------------------------------
18 1 file changed, 3 insertions(+), 31 deletions(-)
19
20diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
21index ef57b1e..5be3915 100644
22--- a/drivers/usb/serial/option.c
23+++ b/drivers/usb/serial/option.c
24@@ -1269,35 +1269,6 @@ static struct usb_serial_driver option_1port_device = {
25
26 static int debug;
27
28-/* per port private data */
29-
30-#define N_IN_URB 4
31-#define N_OUT_URB 4
32-#define IN_BUFLEN 4096
33-#define OUT_BUFLEN 4096
34-
35-struct option_port_private {
36- /* Input endpoints and buffer for this port */
37- struct urb *in_urbs[N_IN_URB];
38- u8 *in_buffer[N_IN_URB];
39- /* Output endpoints and buffer for this port */
40- struct urb *out_urbs[N_OUT_URB];
41- u8 *out_buffer[N_OUT_URB];
42- unsigned long out_busy; /* Bit vector of URBs in use */
43- int opened;
44- struct usb_anchor delayed;
45-
46- /* Settings for the port */
47- int rts_state; /* Handshaking pins (outputs) */
48- int dtr_state;
49- int cts_state; /* Handshaking pins (inputs) */
50- int dsr_state;
51- int dcd_state;
52- int ri_state;
53-
54- unsigned long tx_start_time[N_OUT_URB];
55-};
56-
57 /* Functions used by new usb-serial code. */
58 static int __init option_init(void)
59 {
60@@ -1400,7 +1371,8 @@ static void option_instat_callback(struct urb *urb)
61 int err;
62 int status = urb->status;
63 struct usb_serial_port *port = urb->context;
64- struct option_port_private *portdata = usb_get_serial_port_data(port);
65+ struct usb_wwan_port_private *portdata =
66+ usb_get_serial_port_data(port);
67
68 dbg("%s", __func__);
69 dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata);
70@@ -1461,7 +1433,7 @@ static int option_send_setup(struct usb_serial_port *port)
71 struct usb_serial *serial = port->serial;
72 struct usb_wwan_intf_private *intfdata =
73 (struct usb_wwan_intf_private *) serial->private;
74- struct option_port_private *portdata;
75+ struct usb_wwan_port_private *portdata;
76 int ifNum = serial->interface->cur_altsetting->desc.bInterfaceNumber;
77 int val = 0;
78 dbg("%s", __func__);
79--
801.7.9.5
81
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch
new file mode 100644
index 00000000..3b0f86dd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch
@@ -0,0 +1,58 @@
1From 84fb397f8fc0802c2f0422044a4c9cd34f480b44 Mon Sep 17 00:00:00 2001
2From: Johan Hovold <jhovold@gmail.com>
3Date: Tue, 29 May 2012 18:22:48 +0200
4Subject: [PATCH 53/67] USB: option: fix memory leak
5
6commit b9c3aab315b51f81649a0d737c4c73783fbd8de0 upstream.
7
8Fix memory leak introduced by commit 383cedc3bb435de7a2 ("USB: serial:
9full autosuspend support for the option driver") which allocates
10usb-serial data but never frees it.
11
12Signed-off-by: Johan Hovold <jhovold@gmail.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
15---
16 drivers/usb/serial/option.c | 12 +++++++++++-
17 1 file changed, 11 insertions(+), 1 deletion(-)
18
19diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
20index 5be3915..4bd2b85 100644
21--- a/drivers/usb/serial/option.c
22+++ b/drivers/usb/serial/option.c
23@@ -47,6 +47,7 @@
24 /* Function prototypes */
25 static int option_probe(struct usb_serial *serial,
26 const struct usb_device_id *id);
27+static void option_release(struct usb_serial *serial);
28 static int option_send_setup(struct usb_serial_port *port);
29 static void option_instat_callback(struct urb *urb);
30
31@@ -1259,7 +1260,7 @@ static struct usb_serial_driver option_1port_device = {
32 .ioctl = usb_wwan_ioctl,
33 .attach = usb_wwan_startup,
34 .disconnect = usb_wwan_disconnect,
35- .release = usb_wwan_release,
36+ .release = option_release,
37 .read_int_callback = option_instat_callback,
38 #ifdef CONFIG_PM
39 .suspend = usb_wwan_suspend,
40@@ -1366,6 +1367,15 @@ static int option_probe(struct usb_serial *serial,
41 return 0;
42 }
43
44+static void option_release(struct usb_serial *serial)
45+{
46+ struct usb_wwan_intf_private *priv = usb_get_serial_data(serial);
47+
48+ usb_wwan_release(serial);
49+
50+ kfree(priv);
51+}
52+
53 static void option_instat_callback(struct urb *urb)
54 {
55 int err;
56--
571.7.9.5
58
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch
new file mode 100644
index 00000000..750f0cc2
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch
@@ -0,0 +1,94 @@
1From 8d06ef9e804169ec35e4b67ae24e8712b0fa87bb Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?=E8=AF=B4=E4=B8=8D=E5=BE=97?= <gavin.kx@qq.com>
3Date: Mon, 28 May 2012 21:31:29 +0800
4Subject: [PATCH 54/67] USB: option: add more YUGA device ids
5
6commit 0ef0be15fd2564767f114c249fc4af704d8e16f4 upstream.
7
8Signed-off-by: gavin zhu <gavin.zhu@qq.com>
9Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
11---
12 drivers/usb/serial/option.c | 44 ++++++++++++++++++++++++++-----------------
13 1 file changed, 27 insertions(+), 17 deletions(-)
14
15diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
16index 4bd2b85..61d6c31 100644
17--- a/drivers/usb/serial/option.c
18+++ b/drivers/usb/serial/option.c
19@@ -426,7 +426,7 @@ static void option_instat_callback(struct urb *urb);
20 #define SAMSUNG_VENDOR_ID 0x04e8
21 #define SAMSUNG_PRODUCT_GT_B3730 0x6889
22
23-/* YUGA products www.yuga-info.com*/
24+/* YUGA products www.yuga-info.com gavin.kx@qq.com */
25 #define YUGA_VENDOR_ID 0x257A
26 #define YUGA_PRODUCT_CEM600 0x1601
27 #define YUGA_PRODUCT_CEM610 0x1602
28@@ -443,6 +443,8 @@ static void option_instat_callback(struct urb *urb);
29 #define YUGA_PRODUCT_CEU516 0x160C
30 #define YUGA_PRODUCT_CEU528 0x160D
31 #define YUGA_PRODUCT_CEU526 0x160F
32+#define YUGA_PRODUCT_CEU881 0x161F
33+#define YUGA_PRODUCT_CEU882 0x162F
34
35 #define YUGA_PRODUCT_CWM600 0x2601
36 #define YUGA_PRODUCT_CWM610 0x2602
37@@ -458,23 +460,26 @@ static void option_instat_callback(struct urb *urb);
38 #define YUGA_PRODUCT_CWU518 0x260B
39 #define YUGA_PRODUCT_CWU516 0x260C
40 #define YUGA_PRODUCT_CWU528 0x260D
41+#define YUGA_PRODUCT_CWU581 0x260E
42 #define YUGA_PRODUCT_CWU526 0x260F
43-
44-#define YUGA_PRODUCT_CLM600 0x2601
45-#define YUGA_PRODUCT_CLM610 0x2602
46-#define YUGA_PRODUCT_CLM500 0x2603
47-#define YUGA_PRODUCT_CLM510 0x2604
48-#define YUGA_PRODUCT_CLM800 0x2605
49-#define YUGA_PRODUCT_CLM900 0x2606
50-
51-#define YUGA_PRODUCT_CLU718 0x2607
52-#define YUGA_PRODUCT_CLU716 0x2608
53-#define YUGA_PRODUCT_CLU728 0x2609
54-#define YUGA_PRODUCT_CLU726 0x260A
55-#define YUGA_PRODUCT_CLU518 0x260B
56-#define YUGA_PRODUCT_CLU516 0x260C
57-#define YUGA_PRODUCT_CLU528 0x260D
58-#define YUGA_PRODUCT_CLU526 0x260F
59+#define YUGA_PRODUCT_CWU582 0x261F
60+#define YUGA_PRODUCT_CWU583 0x262F
61+
62+#define YUGA_PRODUCT_CLM600 0x3601
63+#define YUGA_PRODUCT_CLM610 0x3602
64+#define YUGA_PRODUCT_CLM500 0x3603
65+#define YUGA_PRODUCT_CLM510 0x3604
66+#define YUGA_PRODUCT_CLM800 0x3605
67+#define YUGA_PRODUCT_CLM900 0x3606
68+
69+#define YUGA_PRODUCT_CLU718 0x3607
70+#define YUGA_PRODUCT_CLU716 0x3608
71+#define YUGA_PRODUCT_CLU728 0x3609
72+#define YUGA_PRODUCT_CLU726 0x360A
73+#define YUGA_PRODUCT_CLU518 0x360B
74+#define YUGA_PRODUCT_CLU516 0x360C
75+#define YUGA_PRODUCT_CLU528 0x360D
76+#define YUGA_PRODUCT_CLU526 0x360F
77
78 /* Viettel products */
79 #define VIETTEL_VENDOR_ID 0x2262
80@@ -1210,6 +1215,11 @@ static const struct usb_device_id option_ids[] = {
81 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) },
82 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) },
83 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
84+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU881) },
85+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU882) },
86+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU581) },
87+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU582) },
88+ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU583) },
89 { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
90 { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
91 { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
92--
931.7.9.5
94
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch
new file mode 100644
index 00000000..6102fca5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch
@@ -0,0 +1,55 @@
1From c9d1a254f6f1c91f6d43d9ec46d7d1d76f2f82ee Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com>
3Date: Mon, 4 Jun 2012 23:24:51 -0700
4Subject: [PATCH 55/67] target: Return error to initiator if SET TARGET PORT
5 GROUPS emulation fails
6
7commit 59e4f541baf728dbb426949bfa9f6862387ffd0e upstream.
8
9The error paths in target_emulate_set_target_port_groups() are all
10essentially "rc = -EINVAL; goto out;" but the code at "out:" ignores
11rc and always returns success. This means that even if eg explicit
12ALUA is turned off, the initiator will always see a good SCSI status
13for SET TARGET PORT GROUPS.
14
15Fix this by returning rc as is intended. It appears this bug was
16added by the following patch:
17
18commit 05d1c7c0d0db4cc25548d9aadebb416888a82327
19Author: Andy Grover <agrover@redhat.com>
20Date: Wed Jul 20 19:13:28 2011 +0000
21
22 target: Make all control CDBs scatter-gather
23
24Signed-off-by: Roland Dreier <roland@purestorage.com>
25Cc: Andy Grover <agrover@redhat.com>
26Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
27[bwh: Backported to 3.2: we have transport_complete_task()
28 and not target_complete_cmd()]
29Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
30---
31 drivers/target/target_core_alua.c | 8 +++++---
32 1 file changed, 5 insertions(+), 3 deletions(-)
33
34diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
35index 5b05744..0364ca2 100644
36--- a/drivers/target/target_core_alua.c
37+++ b/drivers/target/target_core_alua.c
38@@ -352,9 +352,11 @@ int target_emulate_set_target_port_groups(struct se_task *task)
39
40 out:
41 transport_kunmap_data_sg(cmd);
42- task->task_scsi_status = GOOD;
43- transport_complete_task(task, 1);
44- return 0;
45+ if (!rc) {
46+ task->task_scsi_status = GOOD;
47+ transport_complete_task(task, 1);
48+ }
49+ return rc;
50 }
51
52 static inline int core_alua_state_nonoptimized(
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch
new file mode 100644
index 00000000..12318639
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch
@@ -0,0 +1,179 @@
1From edf1db1d2784e8b11a07eb3e6b7efb3cb45291ae Mon Sep 17 00:00:00 2001
2From: Alan Stern <stern@rowland.harvard.edu>
3Date: Wed, 13 Jun 2012 11:20:19 -0400
4Subject: [PATCH 56/67] USB: add NO_D3_DURING_SLEEP flag and revert
5 151b61284776be2
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit c2fb8a3fa25513de8fedb38509b1f15a5bbee47b upstream.
11
12This patch (as1558) fixes a problem affecting several ASUS computers:
13The machine crashes or corrupts memory when going into suspend if the
14ehci-hcd driver is bound to any controllers. Users have been forced
15to unbind or unload ehci-hcd before putting their systems to sleep.
16
17After extensive testing, it was determined that the machines don't
18like going into suspend when any EHCI controllers are in the PCI D3
19power state. Presumably this is a firmware bug, but there's nothing
20we can do about it except to avoid putting the controllers in D3
21during system sleep.
22
23The patch adds a new flag to indicate whether the problem is present,
24and avoids changing the controller's power state if the flag is set.
25Runtime suspend is unaffected; this matters only for system suspend.
26However as a side effect, the controller will not respond to remote
27wakeup requests while the system is asleep. Hence USB wakeup is not
28functional -- but of course, this is already true in the current state
29of affairs.
30
31A similar patch has already been applied as commit
32151b61284776be2d6f02d48c23c3625678960b97 (USB: EHCI: fix crash during
33suspend on ASUS computers). The patch supersedes that one and reverts
34it. There are two differences:
35
36 The old patch added the flag at the USB level; this patch
37 adds it at the PCI level.
38
39 The old patch applied to all chipsets with the same vendor,
40 subsystem vendor, and product IDs; this patch makes an
41 exception for a known-good system (based on DMI information).
42
43Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
44Tested-by: Dâniel Fraga <fragabr@gmail.com>
45Tested-by: Andrey Rahmatullin <wrar@wrar.name>
46Tested-by: Steven Rostedt <rostedt@goodmis.org>
47Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl>
48Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
49Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
50---
51 drivers/pci/pci.c | 5 +++++
52 drivers/pci/quirks.c | 26 ++++++++++++++++++++++++++
53 drivers/usb/core/hcd-pci.c | 9 ---------
54 drivers/usb/host/ehci-pci.c | 8 --------
55 include/linux/pci.h | 2 ++
56 include/linux/usb/hcd.h | 2 --
57 6 files changed, 33 insertions(+), 19 deletions(-)
58
59diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
60index 6d4a531..e5b75eb 100644
61--- a/drivers/pci/pci.c
62+++ b/drivers/pci/pci.c
63@@ -1689,6 +1689,11 @@ int pci_prepare_to_sleep(struct pci_dev *dev)
64 if (target_state == PCI_POWER_ERROR)
65 return -EIO;
66
67+ /* Some devices mustn't be in D3 during system sleep */
68+ if (target_state == PCI_D3hot &&
69+ (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP))
70+ return 0;
71+
72 pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev));
73
74 error = pci_set_power_state(dev, target_state);
75diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
76index 78fda9c..3c56fec 100644
77--- a/drivers/pci/quirks.c
78+++ b/drivers/pci/quirks.c
79@@ -2940,6 +2940,32 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev)
80 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
81 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
82
83+/*
84+ * The Intel 6 Series/C200 Series chipset's EHCI controllers on many
85+ * ASUS motherboards will cause memory corruption or a system crash
86+ * if they are in D3 while the system is put into S3 sleep.
87+ */
88+static void __devinit asus_ehci_no_d3(struct pci_dev *dev)
89+{
90+ const char *sys_info;
91+ static const char good_Asus_board[] = "P8Z68-V";
92+
93+ if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)
94+ return;
95+ if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK)
96+ return;
97+ sys_info = dmi_get_system_info(DMI_BOARD_NAME);
98+ if (sys_info && memcmp(sys_info, good_Asus_board,
99+ sizeof(good_Asus_board) - 1) == 0)
100+ return;
101+
102+ dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n");
103+ dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP;
104+ device_set_wakeup_capable(&dev->dev, false);
105+}
106+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3);
107+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3);
108+
109 static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
110 struct pci_fixup *end)
111 {
112diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
113index 5f1404a..61d08dd 100644
114--- a/drivers/usb/core/hcd-pci.c
115+++ b/drivers/usb/core/hcd-pci.c
116@@ -495,15 +495,6 @@ static int hcd_pci_suspend_noirq(struct device *dev)
117
118 pci_save_state(pci_dev);
119
120- /*
121- * Some systems crash if an EHCI controller is in D3 during
122- * a sleep transition. We have to leave such controllers in D0.
123- */
124- if (hcd->broken_pci_sleep) {
125- dev_dbg(dev, "Staying in PCI D0\n");
126- return retval;
127- }
128-
129 /* If the root hub is dead rather than suspended, disallow remote
130 * wakeup. usb_hc_died() should ensure that both hosts are marked as
131 * dying, so we only need to check the primary roothub.
132diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
133index ee85e81..a79e64b 100644
134--- a/drivers/usb/host/ehci-pci.c
135+++ b/drivers/usb/host/ehci-pci.c
136@@ -144,14 +144,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
137 hcd->has_tt = 1;
138 tdi_reset(ehci);
139 }
140- if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) {
141- /* EHCI #1 or #2 on 6 Series/C200 Series chipset */
142- if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) {
143- ehci_info(ehci, "broken D3 during system sleep on ASUS\n");
144- hcd->broken_pci_sleep = 1;
145- device_set_wakeup_capable(&pdev->dev, false);
146- }
147- }
148 break;
149 case PCI_VENDOR_ID_TDI:
150 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
151diff --git a/include/linux/pci.h b/include/linux/pci.h
152index 7cda65b..c0cfa0d 100644
153--- a/include/linux/pci.h
154+++ b/include/linux/pci.h
155@@ -176,6 +176,8 @@ enum pci_dev_flags {
156 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
157 /* Provide indication device is assigned by a Virtual Machine Manager */
158 PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
159+ /* Device causes system crash if in D3 during S3 sleep */
160+ PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8,
161 };
162
163 enum pci_irq_reroute_variant {
164diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
165index 64cec8d..03354d5 100644
166--- a/include/linux/usb/hcd.h
167+++ b/include/linux/usb/hcd.h
168@@ -128,8 +128,6 @@ struct usb_hcd {
169 unsigned wireless:1; /* Wireless USB HCD */
170 unsigned authorized_default:1;
171 unsigned has_tt:1; /* Integrated TT in root hub */
172- unsigned broken_pci_sleep:1; /* Don't put the
173- controller in PCI-D3 for system sleep */
174
175 int irq; /* irq allocated */
176 void __iomem *regs; /* device memory/io */
177--
1781.7.9.5
179
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch
new file mode 100644
index 00000000..abcb4c97
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch
@@ -0,0 +1,162 @@
1From 445ae7e401ef25e383d9784a4602b815b2a580e1 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
3Date: Wed, 30 May 2012 10:00:14 +0200
4Subject: [PATCH 57/67] USB: serial: Enforce USB driver and USB serial driver
5 match
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 954c3f8a5f1b7716be9eee978b3bc85bae92d7c8 upstream.
11
12We need to make sure that the USB serial driver we find
13matches the USB driver whose probe we are currently
14executing. Otherwise we will end up with USB serial
15devices bound to the correct serial driver but wrong
16USB driver.
17
18An example of such cross-probing, where the usbserial_generic
19USB driver has found the sierra serial driver:
20
21May 29 18:26:15 nemi kernel: [ 4442.559246] usbserial_generic 4-4:1.0: Sierra USB modem converter detected
22May 29 18:26:20 nemi kernel: [ 4447.556747] usbserial_generic 4-4:1.2: Sierra USB modem converter detected
23May 29 18:26:25 nemi kernel: [ 4452.557288] usbserial_generic 4-4:1.3: Sierra USB modem converter detected
24
25sysfs view of the same problem:
26
27bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/sierra/
28total 0
29--w------- 1 root root 4096 May 29 18:23 bind
30lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/usbserial
31--w------- 1 root root 4096 May 29 18:23 uevent
32--w------- 1 root root 4096 May 29 18:23 unbind
33bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/sierra/
34total 0
35--w------- 1 root root 4096 May 29 18:23 bind
36lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/sierra
37-rw-r--r-- 1 root root 4096 May 29 18:23 new_id
38lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB0 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0/ttyUSB0
39lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB1 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2/ttyUSB1
40lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB2 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3/ttyUSB2
41--w------- 1 root root 4096 May 29 18:23 uevent
42--w------- 1 root root 4096 May 29 18:23 unbind
43
44bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/usbserial_generic/
45total 0
46lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.0 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0
47lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.2 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2
48lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.3 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3
49--w------- 1 root root 4096 May 29 18:33 bind
50lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial
51--w------- 1 root root 4096 May 29 18:22 uevent
52--w------- 1 root root 4096 May 29 18:33 unbind
53bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/generic/
54total 0
55--w------- 1 root root 4096 May 29 18:33 bind
56lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial
57-rw-r--r-- 1 root root 4096 May 29 18:33 new_id
58--w------- 1 root root 4096 May 29 18:22 uevent
59--w------- 1 root root 4096 May 29 18:33 unbind
60
61So we end up with a mismatch between the USB driver and the
62USB serial driver. The reason for the above is simple: The
63USB driver probe will succeed if *any* registered serial
64driver matches, and will use that serial driver for all
65serial driver functions.
66
67This makes ref counting go wrong. We count the USB driver
68as used, but not the USB serial driver. This may result
69in Oops'es as demonstrated by Johan Hovold <jhovold@gmail.com>:
70
71[11811.646396] drivers/usb/serial/usb-serial.c: get_free_serial 1
72[11811.646443] drivers/usb/serial/usb-serial.c: get_free_serial - minor base = 0
73[11811.646460] drivers/usb/serial/usb-serial.c: usb_serial_probe - registering ttyUSB0
74[11811.646766] usb 6-1: pl2303 converter now attached to ttyUSB0
75[11812.264197] USB Serial deregistering driver FTDI USB Serial Device
76[11812.264865] usbcore: deregistering interface driver ftdi_sio
77[11812.282180] USB Serial deregistering driver pl2303
78[11812.283141] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
79[11812.283272] usbcore: deregistering interface driver pl2303
80[11812.301056] USB Serial deregistering driver generic
81[11812.301186] usbcore: deregistering interface driver usbserial_generic
82[11812.301259] drivers/usb/serial/usb-serial.c: usb_serial_disconnect
83[11812.301823] BUG: unable to handle kernel paging request at f8e7438c
84[11812.301845] IP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial]
85[11812.301871] *pde = 357ef067 *pte = 00000000
86[11812.301957] Oops: 0000 [#1] PREEMPT SMP
87[11812.301983] Modules linked in: usbserial(-) [last unloaded: pl2303]
88[11812.302008]
89[11812.302019] Pid: 1323, comm: modprobe Tainted: G W 3.4.0-rc7+ #101 Dell Inc. Vostro 1520/0T816J
90[11812.302115] EIP: 0060:[<f8e38445>] EFLAGS: 00010246 CPU: 1
91[11812.302130] EIP is at usb_serial_disconnect+0xb5/0x100 [usbserial]
92[11812.302141] EAX: f508a180 EBX: f508a180 ECX: 00000000 EDX: f8e74300
93[11812.302151] ESI: f5050800 EDI: 00000001 EBP: f5141e78 ESP: f5141e58
94[11812.302160] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
95[11812.302170] CR0: 8005003b CR2: f8e7438c CR3: 34848000 CR4: 000007d0
96[11812.302180] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
97[11812.302189] DR6: ffff0ff0 DR7: 00000400
98[11812.302199] Process modprobe (pid: 1323, ti=f5140000 task=f61e2bc0 task.ti=f5140000)
99[11812.302209] Stack:
100[11812.302216] f8e3be0f f8e3b29c f8e3ae00 00000000 f513641c f5136400 f513641c f507a540
101[11812.302325] f5141e98 c133d2c1 00000000 00000000 f509c400 f513641c f507a590 f5136450
102[11812.302372] f5141ea8 c12f0344 f513641c f507a590 f5141ebc c12f0c67 00000000 f507a590
103[11812.302419] Call Trace:
104[11812.302439] [<c133d2c1>] usb_unbind_interface+0x51/0x190
105[11812.302456] [<c12f0344>] __device_release_driver+0x64/0xb0
106[11812.302469] [<c12f0c67>] driver_detach+0x97/0xa0
107[11812.302483] [<c12f001c>] bus_remove_driver+0x6c/0xe0
108[11812.302500] [<c145938d>] ? __mutex_unlock_slowpath+0xcd/0x140
109[11812.302514] [<c12f0ff9>] driver_unregister+0x49/0x80
110[11812.302528] [<c1457df6>] ? printk+0x1d/0x1f
111[11812.302540] [<c133c50d>] usb_deregister+0x5d/0xb0
112[11812.302557] [<f8e37c55>] ? usb_serial_deregister+0x45/0x50 [usbserial]
113[11812.302575] [<f8e37c8d>] usb_serial_deregister_drivers+0x2d/0x40 [usbserial]
114[11812.302593] [<f8e3a6e2>] usb_serial_generic_deregister+0x12/0x20 [usbserial]
115[11812.302611] [<f8e3acf0>] usb_serial_exit+0x8/0x32 [usbserial]
116[11812.302716] [<c1080b48>] sys_delete_module+0x158/0x260
117[11812.302730] [<c110594e>] ? mntput+0x1e/0x30
118[11812.302746] [<c145c3c3>] ? sysenter_exit+0xf/0x18
119[11812.302746] [<c107777c>] ? trace_hardirqs_on_caller+0xec/0x170
120[11812.302746] [<c145c390>] sysenter_do_call+0x12/0x36
121[11812.302746] Code: 24 02 00 00 e8 dd f3 20 c8 f6 86 74 02 00 00 02 74 b4 8d 86 4c 02 00 00 47 e8 78 55 4b c8 0f b6 43 0e 39 f8 7f a9 8b 53 04 89 d8 <ff> 92 8c 00 00 00 89 d8 e8 0e ff ff ff 8b 45 f0 c7 44 24 04 2f
122[11812.302746] EIP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial] SS:ESP 0068:f5141e58
123[11812.302746] CR2: 00000000f8e7438c
124
125Fix by only evaluating serial drivers pointing back to the
126USB driver we are currently probing. This still allows two
127or more drivers to match the same device, running their
128serial driver probes to sort out which one to use.
129
130Signed-off-by: Bjørn Mork <bjorn@mork.no>
131Reviewed-by: Felipe Balbi <balbi@ti.com>
132Tested-by: Johan Hovold <jhovold@gmail.com>
133Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
134Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
135---
136 drivers/usb/serial/usb-serial.c | 6 ++++--
137 1 file changed, 4 insertions(+), 2 deletions(-)
138
139diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
140index 38d7ebd..8bea45c 100644
141--- a/drivers/usb/serial/usb-serial.c
142+++ b/drivers/usb/serial/usb-serial.c
143@@ -669,12 +669,14 @@ exit:
144 static struct usb_serial_driver *search_serial_device(
145 struct usb_interface *iface)
146 {
147- const struct usb_device_id *id;
148+ const struct usb_device_id *id = NULL;
149 struct usb_serial_driver *drv;
150+ struct usb_driver *driver = to_usb_driver(iface->dev.driver);
151
152 /* Check if the usb id matches a known device */
153 list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
154- id = get_iface_id(drv, iface);
155+ if (drv->usb_driver == driver)
156+ id = get_iface_id(drv, iface);
157 if (id)
158 return drv;
159 }
160--
1611.7.9.5
162
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch
new file mode 100644
index 00000000..6243e98f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch
@@ -0,0 +1,89 @@
1From 6007e93797d693599661f4547d329258ec711a9f Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Fri, 1 Jun 2012 10:06:23 +0200
4Subject: [PATCH 58/67] xhci: Fix invalid loop check in xhci_free_tt_info()
5
6commit 46ed8f00d8982e49f8fe2c1a9cea192f640cb3ba upstream.
7
8xhci_free_tt_info() may access the invalid memory when it removes the
9last entry but the list is not empty. Then tt_next reaches to the
10list head but it still tries to check the tt_info of that entry.
11
12This patch fixes the bug and cleans up the messy code by rewriting
13with a simple list_for_each_entry_safe().
14
15This patch should be backported to kernels as old as 3.2, that contain
16the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
17information about roothubs and TTs."
18
19Signed-off-by: Takashi Iwai <tiwai@suse.de>
20Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
21Reviewed-by: Oliver Neukum <oneukum@suse.de>
22Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
23---
24 drivers/usb/host/xhci-mem.c | 39 ++++++++++-----------------------------
25 1 file changed, 10 insertions(+), 29 deletions(-)
26
27diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
28index 4232e868..b85eb36 100644
29--- a/drivers/usb/host/xhci-mem.c
30+++ b/drivers/usb/host/xhci-mem.c
31@@ -693,10 +693,9 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci,
32 struct xhci_virt_device *virt_dev,
33 int slot_id)
34 {
35- struct list_head *tt;
36 struct list_head *tt_list_head;
37- struct list_head *tt_next;
38- struct xhci_tt_bw_info *tt_info;
39+ struct xhci_tt_bw_info *tt_info, *next;
40+ bool slot_found = false;
41
42 /* If the device never made it past the Set Address stage,
43 * it may not have the real_port set correctly.
44@@ -708,34 +707,16 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci,
45 }
46
47 tt_list_head = &(xhci->rh_bw[virt_dev->real_port - 1].tts);
48- if (list_empty(tt_list_head))
49- return;
50-
51- list_for_each(tt, tt_list_head) {
52- tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
53- if (tt_info->slot_id == slot_id)
54+ list_for_each_entry_safe(tt_info, next, tt_list_head, tt_list) {
55+ /* Multi-TT hubs will have more than one entry */
56+ if (tt_info->slot_id == slot_id) {
57+ slot_found = true;
58+ list_del(&tt_info->tt_list);
59+ kfree(tt_info);
60+ } else if (slot_found) {
61 break;
62+ }
63 }
64- /* Cautionary measure in case the hub was disconnected before we
65- * stored the TT information.
66- */
67- if (tt_info->slot_id != slot_id)
68- return;
69-
70- tt_next = tt->next;
71- tt_info = list_entry(tt, struct xhci_tt_bw_info,
72- tt_list);
73- /* Multi-TT hubs will have more than one entry */
74- do {
75- list_del(tt);
76- kfree(tt_info);
77- tt = tt_next;
78- if (list_empty(tt_list_head))
79- break;
80- tt_next = tt->next;
81- tt_info = list_entry(tt, struct xhci_tt_bw_info,
82- tt_list);
83- } while (tt_info->slot_id == slot_id);
84 }
85
86 int xhci_alloc_tt_info(struct xhci_hcd *xhci,
87--
881.7.9.5
89
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch
new file mode 100644
index 00000000..41ec5edb
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch
@@ -0,0 +1,94 @@
1From fcb37c126483592a507dafef265b134f975a749f Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Fri, 1 Jun 2012 10:06:24 +0200
4Subject: [PATCH 59/67] xhci: Don't free endpoints in xhci_mem_cleanup()
5
6commit 32f1d2c536d0c26c5814cb0e6a0606c42d02fac1 upstream.
7
8This patch fixes a few issues introduced in the recent fix
9[f8a9e72d: USB: fix resource leak in xhci power loss path]
10
11- The endpoints listed in bw table are just links and each entry is an
12 array member of dev->eps[]. But the commit above adds a kfree() call
13 to these instances, and thus it results in memory corruption.
14
15- It clears only the first entry of rh_bw[], but there can be multiple
16 ports.
17
18- It'd be safer to clear the list_head of ep as well, not only
19 removing from the list, as it's checked in
20 xhci_discover_or_reset_device().
21
22This patch should be backported to kernels as old as 3.2, that contain
23the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
24information about roothubs and TTs."
25
26Signed-off-by: Takashi Iwai <tiwai@suse.de>
27Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
28Reviewed-by: Oliver Neukum <oneukum@suse.de>
29Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
30---
31 drivers/usb/host/xhci-mem.c | 35 ++++++++++++++---------------------
32 1 file changed, 14 insertions(+), 21 deletions(-)
33
34diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
35index b85eb36..a40ab98 100644
36--- a/drivers/usb/host/xhci-mem.c
37+++ b/drivers/usb/host/xhci-mem.c
38@@ -1680,17 +1680,9 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
39 {
40 struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller);
41 struct dev_info *dev_info, *next;
42- struct list_head *tt_list_head;
43- struct list_head *tt;
44- struct list_head *endpoints;
45- struct list_head *ep, *q;
46- struct xhci_tt_bw_info *tt_info;
47- struct xhci_interval_bw_table *bwt;
48- struct xhci_virt_ep *virt_ep;
49-
50 unsigned long flags;
51 int size;
52- int i;
53+ int i, j, num_ports;
54
55 /* Free the Event Ring Segment Table and the actual Event Ring */
56 size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
57@@ -1747,21 +1739,22 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
58 }
59 spin_unlock_irqrestore(&xhci->lock, flags);
60
61- bwt = &xhci->rh_bw->bw_table;
62- for (i = 0; i < XHCI_MAX_INTERVAL; i++) {
63- endpoints = &bwt->interval_bw[i].endpoints;
64- list_for_each_safe(ep, q, endpoints) {
65- virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list);
66- list_del(&virt_ep->bw_endpoint_list);
67- kfree(virt_ep);
68+ num_ports = HCS_MAX_PORTS(xhci->hcs_params1);
69+ for (i = 0; i < num_ports; i++) {
70+ struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table;
71+ for (j = 0; j < XHCI_MAX_INTERVAL; j++) {
72+ struct list_head *ep = &bwt->interval_bw[j].endpoints;
73+ while (!list_empty(ep))
74+ list_del_init(ep->next);
75 }
76 }
77
78- tt_list_head = &xhci->rh_bw->tts;
79- list_for_each_safe(tt, q, tt_list_head) {
80- tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list);
81- list_del(tt);
82- kfree(tt_info);
83+ for (i = 0; i < num_ports; i++) {
84+ struct xhci_tt_bw_info *tt, *n;
85+ list_for_each_entry_safe(tt, n, &xhci->rh_bw[i].tts, tt_list) {
86+ list_del(&tt->tt_list);
87+ kfree(tt);
88+ }
89 }
90
91 xhci->num_usb2_ports = 0;
92--
931.7.9.5
94
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch
new file mode 100644
index 00000000..6ca5f780
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch
@@ -0,0 +1,66 @@
1From 989ee831bd73b7de3030e3d01068f4b115f277f9 Mon Sep 17 00:00:00 2001
2From: Andiry Xu <andiry.xu@gmail.com>
3Date: Wed, 13 Jun 2012 10:51:57 +0800
4Subject: [PATCH 60/67] xHCI: Increase the timeout for controller save/restore
5 state operation
6
7commit 622eb783fe6ff4c1baa47db16c3a5db97f9e6e50 upstream.
8
9When system software decides to power down the xHC with the intent of
10resuming operation at a later time, it will ask xHC to save the internal
11state and restore it when resume to correctly recover from a power event.
12Two bits are used to enable this operation: Save State and Restore State.
13
14xHCI spec 4.23.2 says software should "Set the Controller Save/Restore
15State flag in the USBCMD register and wait for the Save/Restore State
16Status flag in the USBSTS register to transition to '0'". However, it does
17not define how long software should wait for the SSS/RSS bit to transition
18to 0.
19
20Currently the timeout is set to 1ms. There is bug report
21(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002697)
22indicates that the timeout is too short for ASMedia ASM1042 host controller
23to save/restore the state successfully. Increase the timeout to 10ms helps to
24resolve the issue.
25
26This patch should be backported to stable kernels as old as 2.6.37, that
27contain the commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI:
28PCI power management implementation"
29
30Signed-off-by: Andiry Xu <andiry.xu@gmail.com>
31Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
32Cc: Ming Lei <ming.lei@canonical.com>
33Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
34---
35 drivers/usb/host/xhci.c | 8 ++++----
36 1 file changed, 4 insertions(+), 4 deletions(-)
37
38diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
39index 4c00606..05f82e9 100644
40--- a/drivers/usb/host/xhci.c
41+++ b/drivers/usb/host/xhci.c
42@@ -783,8 +783,8 @@ int xhci_suspend(struct xhci_hcd *xhci)
43 command = xhci_readl(xhci, &xhci->op_regs->command);
44 command |= CMD_CSS;
45 xhci_writel(xhci, command, &xhci->op_regs->command);
46- if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) {
47- xhci_warn(xhci, "WARN: xHC CMD_CSS timeout\n");
48+ if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) {
49+ xhci_warn(xhci, "WARN: xHC save state timeout\n");
50 spin_unlock_irq(&xhci->lock);
51 return -ETIMEDOUT;
52 }
53@@ -836,8 +836,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
54 command |= CMD_CRS;
55 xhci_writel(xhci, command, &xhci->op_regs->command);
56 if (handshake(xhci, &xhci->op_regs->status,
57- STS_RESTORE, 0, 10*100)) {
58- xhci_dbg(xhci, "WARN: xHC CMD_CSS timeout\n");
59+ STS_RESTORE, 0, 10 * 1000)) {
60+ xhci_warn(xhci, "WARN: xHC restore state timeout\n");
61 spin_unlock_irq(&xhci->lock);
62 return -ETIMEDOUT;
63 }
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch
new file mode 100644
index 00000000..940cd4cd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch
@@ -0,0 +1,36 @@
1From 8358979f2727e09ed8658dfbc95fa3ffdbbdac75 Mon Sep 17 00:00:00 2001
2From: Geoff Levand <geoff@infradead.org>
3Date: Tue, 8 Nov 2011 16:01:18 -0800
4Subject: [PATCH 61/67] usb: PS3 EHCI QH read work-around
5
6commit aaa0ef289afe9186f81e2340114ea413eef0492a upstream.
7
8PS3 EHCI HC errata fix 244. The SCC EHCI HC will not correctly perform QH
9reads that occur near or span a micro-frame boundry. This is due to a problem
10in the Nak Count Reload Control logic (EHCI Specification 1.0 Section 4.9.1).
11
12The work-around for this problem is for the HC driver to set I=1 (inactive) for
13QHs with H=1 (list head).
14
15Signed-off-by: Geoff Levand <geoff@infradead.org>
16Acked-by: Alan Stern <stern@rowland.harvard.edu>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/usb/host/ehci-hcd.c | 1 +
20 1 file changed, 1 insertion(+)
21
22diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
23index da2f711..64c0d7b 100644
24--- a/drivers/usb/host/ehci-hcd.c
25+++ b/drivers/usb/host/ehci-hcd.c
26@@ -620,6 +620,7 @@ static int ehci_init(struct usb_hcd *hcd)
27 hw = ehci->async->hw;
28 hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma);
29 hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD);
30+ hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */
31 hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT);
32 hw->hw_qtd_next = EHCI_LIST_END(ehci);
33 ehci->async->qh_state = QH_STATE_LINKED;
34--
351.7.9.5
36
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch
new file mode 100644
index 00000000..d3476fc0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch
@@ -0,0 +1,37 @@
1From 5ed14fb69997843bfb782a2f742ef8c583e44f4b Mon Sep 17 00:00:00 2001
2From: Ricardo Martins <rasm@fe.up.pt>
3Date: Tue, 22 May 2012 18:02:03 +0100
4Subject: [PATCH 62/67] USB: fix PS3 EHCI systems
5
6commit 4f7a67e2dd49fbfba002c453bc24bf00e701cc71 upstream.
7
8After commit aaa0ef289afe9186f81e2340114ea413eef0492a "PS3 EHCI QH
9read work-around", Terratec Grabby (em28xx) stopped working with AMD
10Geode LX 800 (USB controller AMD CS5536). Since this is a PS3 only
11fix, the following patch adds a conditional block around it.
12
13Signed-off-by: Ricardo Martins <rasm@fe.up.pt>
14Acked-by: Alan Stern <stern@rowland.harvard.edu>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17---
18 drivers/usb/host/ehci-hcd.c | 2 ++
19 1 file changed, 2 insertions(+)
20
21diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
22index 64c0d7b..339be10 100644
23--- a/drivers/usb/host/ehci-hcd.c
24+++ b/drivers/usb/host/ehci-hcd.c
25@@ -620,7 +620,9 @@ static int ehci_init(struct usb_hcd *hcd)
26 hw = ehci->async->hw;
27 hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma);
28 hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD);
29+#if defined(CONFIG_PPC_PS3)
30 hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */
31+#endif
32 hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT);
33 hw->hw_qtd_next = EHCI_LIST_END(ehci);
34 ehci->async->qh_state = QH_STATE_LINKED;
35--
361.7.9.5
37
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch
new file mode 100644
index 00000000..8eab02a4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch
@@ -0,0 +1,43 @@
1From d48aade3b822cbd46666d0ef17a646bb5eba2bd3 Mon Sep 17 00:00:00 2001
2From: Otto Meta <otto.patches@sister-shadow.de>
3Date: Wed, 6 Jun 2012 18:46:21 +0200
4Subject: [PATCH 63/67] usb: cdc-acm: fix devices not unthrottled on open
5
6commit 6c4707f3f8c44ec18282e1c014c80e1c257042f9 upstream.
7
8Currently CDC-ACM devices stay throttled when their TTY is closed while
9throttled, stalling further communication attempts after the next open.
10
11Unthrottling during open/activate got lost starting with kernel
123.0.0 and this patch reintroduces it.
13
14Signed-off-by: Otto Meta <otto.patches@sister-shadow.de>
15Acked-by: Johan Hovold <jhovold@gmail.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
18---
19 drivers/usb/class/cdc-acm.c | 8 ++++++++
20 1 file changed, 8 insertions(+)
21
22diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
23index e61d9c4..1094469 100644
24--- a/drivers/usb/class/cdc-acm.c
25+++ b/drivers/usb/class/cdc-acm.c
26@@ -498,6 +498,14 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
27
28 usb_autopm_put_interface(acm->control);
29
30+ /*
31+ * Unthrottle device in case the TTY was closed while throttled.
32+ */
33+ spin_lock_irq(&acm->read_lock);
34+ acm->throttled = 0;
35+ acm->throttle_req = 0;
36+ spin_unlock_irq(&acm->read_lock);
37+
38 if (acm_submit_read_urbs(acm, GFP_KERNEL))
39 goto bail_out;
40
41--
421.7.9.5
43
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch
new file mode 100644
index 00000000..81314985
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch
@@ -0,0 +1,88 @@
1From 88948e29878410f75f424d93c132dae0771bbb38 Mon Sep 17 00:00:00 2001
2From: Daniel Mack <zonque@gmail.com>
3Date: Tue, 12 Jun 2012 20:23:52 +0200
4Subject: [PATCH 64/67] USB: fix gathering of interface associations
5
6commit b3a3dd074f7053ef824ad077e5331b52220ceba1 upstream.
7
8TEAC's UD-H01 (and probably other devices) have a gap in the interface
9number allocation of their descriptors:
10
11 Configuration Descriptor:
12 bLength 9
13 bDescriptorType 2
14 wTotalLength 220
15 bNumInterfaces 3
16 [...]
17 Interface Descriptor:
18 bLength 9
19 bDescriptorType 4
20 bInterfaceNumber 0
21 bAlternateSetting 0
22 [...]
23 Interface Association:
24 bLength 8
25 bDescriptorType 11
26 bFirstInterface 2
27 bInterfaceCount 2
28 bFunctionClass 1 Audio
29 bFunctionSubClass 0
30 bFunctionProtocol 32
31 iFunction 4
32 Interface Descriptor:
33 bLength 9
34 bDescriptorType 4
35 bInterfaceNumber 2
36 bAlternateSetting 0
37 [...]
38
39Once a configuration is selected, usb_set_configuration() walks the
40known interfaces of a given configuration and calls find_iad() on
41each of them to set the interface association pointer the interface
42is included in.
43
44The problem here is that the loop variable is taken for the interface
45number in the comparison logic that gathers the association. Which is
46fine as long as the descriptors are sane.
47
48In the case above, however, the logic gets out of sync and the
49interface association fields of all interfaces beyond the interface
50number gap are wrong.
51
52Fix this by passing the interface's bInterfaceNumber to find_iad()
53instead.
54
55Signed-off-by: Daniel Mack <zonque@gmail.com>
56Reported-by: bEN <ml_all@circa.be>
57Reported-by: Ivan Perrone <ivanperrone@hotmail.com>
58Tested-by: ivan perrone <ivanperrone@hotmail.com>
59Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
60Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
61---
62 drivers/usb/core/message.c | 3 ++-
63 1 file changed, 2 insertions(+), 1 deletion(-)
64
65diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
66index ca717da..ef116a5 100644
67--- a/drivers/usb/core/message.c
68+++ b/drivers/usb/core/message.c
69@@ -1803,7 +1803,6 @@ free_interfaces:
70 intfc = cp->intf_cache[i];
71 intf->altsetting = intfc->altsetting;
72 intf->num_altsetting = intfc->num_altsetting;
73- intf->intf_assoc = find_iad(dev, cp, i);
74 kref_get(&intfc->ref);
75
76 alt = usb_altnum_to_altsetting(intf, 0);
77@@ -1816,6 +1815,8 @@ free_interfaces:
78 if (!alt)
79 alt = &intf->altsetting[0];
80
81+ intf->intf_assoc =
82+ find_iad(dev, cp, alt->desc.bInterfaceNumber);
83 intf->cur_altsetting = alt;
84 usb_enable_interface(dev, intf, true);
85 intf->dev.parent = &dev->dev;
86--
871.7.9.5
88
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch
new file mode 100644
index 00000000..ebf34f12
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch
@@ -0,0 +1,102 @@
1From aa557a3d3043ce3af6fb9349fcb59db12972784d Mon Sep 17 00:00:00 2001
2From: Hugh Dickins <hughd@google.com>
3Date: Fri, 15 Jun 2012 17:55:50 -0700
4Subject: [PATCH 65/67] swap: fix shmem swapping when more than 8 areas
5
6commit 9b15b817f3d62409290fd56fe3cbb076a931bb0a upstream.
7
8Minchan Kim reports that when a system has many swap areas, and tmpfs
9swaps out to the ninth or more, shmem_getpage_gfp()'s attempts to read
10back the page cannot locate it, and the read fails with -ENOMEM.
11
12Whoops. Yes, I blindly followed read_swap_header()'s pte_to_swp_entry(
13swp_entry_to_pte()) technique for determining maximum usable swap
14offset, without stopping to realize that that actually depends upon the
15pte swap encoding shifting swap offset to the higher bits and truncating
16it there. Whereas our radix_tree swap encoding leaves offset in the
17lower bits: it's swap "type" (that is, index of swap area) that was
18truncated.
19
20Fix it by reducing the SWP_TYPE_SHIFT() in swapops.h, and removing the
21broken radix_to_swp_entry(swp_to_radix_entry()) from read_swap_header().
22
23This does not reduce the usable size of a swap area any further, it
24leaves it as claimed when making the original commit: no change from 3.0
25on x86_64, nor on i386 without PAE; but 3.0's 512GB is reduced to 128GB
26per swapfile on i386 with PAE. It's not a change I would have risked
27five years ago, but with x86_64 supported for ten years, I believe it's
28appropriate now.
29
30Hmm, and what if some architecture implements its swap pte with offset
31encoded below type? That would equally break the maximum usable swap
32offset check. Happily, they all follow the same tradition of encoding
33offset above type, but I'll prepare a check on that for next.
34
35Reported-and-Reviewed-and-Tested-by: Minchan Kim <minchan@kernel.org>
36Signed-off-by: Hugh Dickins <hughd@google.com>
37Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
38Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
39---
40 include/linux/swapops.h | 8 +++++---
41 mm/swapfile.c | 12 ++++--------
42 2 files changed, 9 insertions(+), 11 deletions(-)
43
44diff --git a/include/linux/swapops.h b/include/linux/swapops.h
45index 2189d3f..d6955607 100644
46--- a/include/linux/swapops.h
47+++ b/include/linux/swapops.h
48@@ -8,13 +8,15 @@
49 * get good packing density in that tree, so the index should be dense in
50 * the low-order bits.
51 *
52- * We arrange the `type' and `offset' fields so that `type' is at the five
53+ * We arrange the `type' and `offset' fields so that `type' is at the seven
54 * high-order bits of the swp_entry_t and `offset' is right-aligned in the
55- * remaining bits.
56+ * remaining bits. Although `type' itself needs only five bits, we allow for
57+ * shmem/tmpfs to shift it all up a further two bits: see swp_to_radix_entry().
58 *
59 * swp_entry_t's are *never* stored anywhere in their arch-dependent format.
60 */
61-#define SWP_TYPE_SHIFT(e) (sizeof(e.val) * 8 - MAX_SWAPFILES_SHIFT)
62+#define SWP_TYPE_SHIFT(e) ((sizeof(e.val) * 8) - \
63+ (MAX_SWAPFILES_SHIFT + RADIX_TREE_EXCEPTIONAL_SHIFT))
64 #define SWP_OFFSET_MASK(e) ((1UL << SWP_TYPE_SHIFT(e)) - 1)
65
66 /*
67diff --git a/mm/swapfile.c b/mm/swapfile.c
68index d3955f2..fad1830 100644
69--- a/mm/swapfile.c
70+++ b/mm/swapfile.c
71@@ -1921,24 +1921,20 @@ static unsigned long read_swap_header(struct swap_info_struct *p,
72
73 /*
74 * Find out how many pages are allowed for a single swap
75- * device. There are three limiting factors: 1) the number
76+ * device. There are two limiting factors: 1) the number
77 * of bits for the swap offset in the swp_entry_t type, and
78 * 2) the number of bits in the swap pte as defined by the
79- * the different architectures, and 3) the number of free bits
80- * in an exceptional radix_tree entry. In order to find the
81+ * different architectures. In order to find the
82 * largest possible bit mask, a swap entry with swap type 0
83 * and swap offset ~0UL is created, encoded to a swap pte,
84 * decoded to a swp_entry_t again, and finally the swap
85 * offset is extracted. This will mask all the bits from
86 * the initial ~0UL mask that can't be encoded in either
87 * the swp_entry_t or the architecture definition of a
88- * swap pte. Then the same is done for a radix_tree entry.
89+ * swap pte.
90 */
91 maxpages = swp_offset(pte_to_swp_entry(
92- swp_entry_to_pte(swp_entry(0, ~0UL))));
93- maxpages = swp_offset(radix_to_swp_entry(
94- swp_to_radix_entry(swp_entry(0, maxpages)))) + 1;
95-
96+ swp_entry_to_pte(swp_entry(0, ~0UL)))) + 1;
97 if (maxpages > swap_header->info.last_page) {
98 maxpages = swap_header->info.last_page + 1;
99 /* p->max is an unsigned int: don't overflow it */
100--
1011.7.9.5
102
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch
new file mode 100644
index 00000000..8c259c27
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch
@@ -0,0 +1,121 @@
1From 5e599e218c67e5888e56cd171473ac988facb120 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Thu, 14 Jun 2012 22:06:36 +0200
4Subject: [PATCH 66/67] drm/radeon: add some additional 6xx/7xx/EG register
5 init
6
7commit b866d1334ba2d544bc575d75357dea6bdcdc7f46 upstream.
8
9- SMX_SAR_CTL0 needs to be programmed correctly to prevent
10problems with memory exports in certain cases.
11- VC_ENHANCE needs to be initialized on 6xx/7xx.
12
13Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
14Signed-off-by: Dave Airlie <airlied@redhat.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/gpu/drm/radeon/evergreen.c | 3 +++
18 drivers/gpu/drm/radeon/evergreend.h | 1 +
19 drivers/gpu/drm/radeon/r600.c | 1 +
20 drivers/gpu/drm/radeon/r600d.h | 1 +
21 drivers/gpu/drm/radeon/rv770.c | 5 ++++-
22 drivers/gpu/drm/radeon/rv770d.h | 3 +++
23 6 files changed, 13 insertions(+), 1 deletion(-)
24
25diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
26index dac178b..931f4df 100644
27--- a/drivers/gpu/drm/radeon/evergreen.c
28+++ b/drivers/gpu/drm/radeon/evergreen.c
29@@ -2148,6 +2148,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
30 smx_dc_ctl0 |= NUMBER_OF_SETS(rdev->config.evergreen.sx_num_of_sets);
31 WREG32(SMX_DC_CTL0, smx_dc_ctl0);
32
33+ if (rdev->family <= CHIP_SUMO2)
34+ WREG32(SMX_SAR_CTL0, 0x00010000);
35+
36 WREG32(SX_EXPORT_BUFFER_SIZES, (COLOR_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_size / 4) - 1) |
37 POSITION_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_pos_size / 4) - 1) |
38 SMX_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_smx_size / 4) - 1)));
39diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
40index 0128445..6ecd23f 100644
41--- a/drivers/gpu/drm/radeon/evergreend.h
42+++ b/drivers/gpu/drm/radeon/evergreend.h
43@@ -270,6 +270,7 @@
44 #define SCRATCH_UMSK 0x8540
45 #define SCRATCH_ADDR 0x8544
46
47+#define SMX_SAR_CTL0 0xA008
48 #define SMX_DC_CTL0 0xA020
49 #define USE_HASH_FUNCTION (1 << 0)
50 #define NUMBER_OF_SETS(x) ((x) << 1)
51diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
52index 9cdda0b..bdfa82a 100644
53--- a/drivers/gpu/drm/radeon/r600.c
54+++ b/drivers/gpu/drm/radeon/r600.c
55@@ -1905,6 +1905,7 @@ void r600_gpu_init(struct radeon_device *rdev)
56 WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA |
57 NUM_CLIP_SEQ(3)));
58 WREG32(PA_SC_ENHANCE, FORCE_EOV_MAX_CLK_CNT(4095));
59+ WREG32(VC_ENHANCE, 0);
60 }
61
62
63diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
64index bfe1b5d..d4d23a8d 100644
65--- a/drivers/gpu/drm/radeon/r600d.h
66+++ b/drivers/gpu/drm/radeon/r600d.h
67@@ -461,6 +461,7 @@
68 #define TC_L2_SIZE(x) ((x)<<5)
69 #define L2_DISABLE_LATE_HIT (1<<9)
70
71+#define VC_ENHANCE 0x9714
72
73 #define VGT_CACHE_INVALIDATION 0x88C4
74 #define CACHE_INVALIDATION(x) ((x)<<0)
75diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
76index e36ba7f..cc79449 100644
77--- a/drivers/gpu/drm/radeon/rv770.c
78+++ b/drivers/gpu/drm/radeon/rv770.c
79@@ -782,6 +782,9 @@ static void rv770_gpu_init(struct radeon_device *rdev)
80 ACK_FLUSH_CTL(3) |
81 SYNC_FLUSH_CTL));
82
83+ if (rdev->family != CHIP_RV770)
84+ WREG32(SMX_SAR_CTL0, 0x00003f3f);
85+
86 db_debug3 = RREG32(DB_DEBUG3);
87 db_debug3 &= ~DB_CLK_OFF_DELAY(0x1f);
88 switch (rdev->family) {
89@@ -960,7 +963,7 @@ static void rv770_gpu_init(struct radeon_device *rdev)
90
91 WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA |
92 NUM_CLIP_SEQ(3)));
93-
94+ WREG32(VC_ENHANCE, 0);
95 }
96
97 void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc)
98diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
99index 7538092..7095a71 100644
100--- a/drivers/gpu/drm/radeon/rv770d.h
101+++ b/drivers/gpu/drm/radeon/rv770d.h
102@@ -208,6 +208,7 @@
103 #define SCRATCH_UMSK 0x8540
104 #define SCRATCH_ADDR 0x8544
105
106+#define SMX_SAR_CTL0 0xA008
107 #define SMX_DC_CTL0 0xA020
108 #define USE_HASH_FUNCTION (1 << 0)
109 #define CACHE_DEPTH(x) ((x) << 1)
110@@ -307,6 +308,8 @@
111 #define TCP_CNTL 0x9610
112 #define TCP_CHAN_STEER 0x9614
113
114+#define VC_ENHANCE 0x9714
115+
116 #define VGT_CACHE_INVALIDATION 0x88C4
117 #define CACHE_INVALIDATION(x) ((x)<<0)
118 #define VC_ONLY 0
119--
1201.7.9.5
121
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch
new file mode 100644
index 00000000..d9d9f9f3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch
@@ -0,0 +1,24 @@
1From 1eb1eabe86e7b13627d8f03d32a2e402e26d77a5 Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Tue, 19 Jun 2012 23:18:30 +0100
4Subject: [PATCH 67/67] Linux 3.2.21
5
6---
7 Makefile | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/Makefile b/Makefile
11index c7e9cc4..7eb465e 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 20
18+SUBLEVEL = 21
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/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch
new file mode 100644
index 00000000..7d796a7c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch
@@ -0,0 +1,54 @@
1From fa18ca5c896696066349e2803dfeeda1fcd4a4e3 Mon Sep 17 00:00:00 2001
2From: Damian <damian.eppel@teleca.com>
3Date: Tue, 5 Jun 2012 23:14:58 +0200
4Subject: [PATCH 1/2] beaglebone: fix LCD3 led/key overlap
5
6Signed-off-by: Koen Kooi <koen@circuitco.com>
7---
8 arch/arm/mach-omap2/board-am335xevm.c | 9 +--------
9 1 file changed, 1 insertion(+), 8 deletions(-)
10
11diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
12index 7fd611f..a337bb3 100644
13--- a/arch/arm/mach-omap2/board-am335xevm.c
14+++ b/arch/arm/mach-omap2/board-am335xevm.c
15@@ -639,7 +639,6 @@ static struct pinmux_config dvia2_pin_mux[] = {
16 /* Module pin mux for Beagleboardtoys 3.5" LCD cape */
17 static struct pinmux_config bbtoys35_pin_mux[] = {
18 {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
19- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
20 {NULL, 0},
21 };
22
23@@ -1196,7 +1195,7 @@ static struct platform_device beaglebone_lcd3_keys = {
24 static struct pinmux_config lcd3a1_keys_pin_mux[] = {
25 {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Left
26 {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Right
27- {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Up
28+ {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Up
29 {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Down
30 {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Enter
31 {NULL, 0},
32@@ -1424,7 +1423,6 @@ static struct platform_device dvi_leds_gpio = {
33 };
34
35 #define BEAGLEBONELCD3_USR0_LED GPIO_TO_PIN(1, 18)
36-#define BEAGLEBONELCD3_USR1_LED GPIO_TO_PIN(1, 19)
37
38 static struct gpio_led lcd3_gpio_leds[] = {
39 {
40@@ -1450,11 +1448,6 @@ static struct gpio_led lcd3_gpio_leds[] = {
41 .default_trigger = "heartbeat",
42 .gpio = BEAGLEBONELCD3_USR0_LED,
43 },
44- {
45- .name = "lcd3::usr1",
46- .default_trigger = "mmc0",
47- .gpio = BEAGLEBONELCD3_USR1_LED,
48- },
49 };
50
51 static struct gpio_led_platform_data lcd3_gpio_led_info = {
52--
531.7.10
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
new file mode 100644
index 00000000..2ea96522
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch
@@ -0,0 +1,80 @@
1From d8e323a5bb24b2deefa6b80bb129b2d2d9db3184 Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@suse.de>
3Date: Fri, 18 Nov 2011 09:44:20 -0800
4Subject: [PATCH 01/16] USB: convert drivers/net/* to use module_usb_driver()
5
6This converts the drivers in drivers/net/* to use the
7module_usb_driver() macro which makes the code smaller and a bit
8simpler.
9
10Added bonus is that it removes some unneeded kernel log messages about
11drivers loading and/or unloading.
12
13Cc: Wolfgang Grandegger <wg@grandegger.com>
14Cc: Samuel Ortiz <samuel@sortiz.org>
15Cc: Oliver Neukum <oliver@neukum.name>
16Cc: Peter Korsgaard <jacmet@sunsite.dk>
17Cc: Petko Manolov <petkan@users.sourceforge.net>
18Cc: Steve Glendinning <steve.glendinning@smsc.com>
19Cc: Christian Lamparter <chunkeey@googlemail.com>
20Cc: "John W. Linville" <linville@tuxdriver.com>
21Cc: Dan Williams <dcbw@redhat.com>
22Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
23Cc: Ivo van Doorn <IvDoorn@gmail.com>
24Cc: Gertjan van Wingerde <gwingerde@gmail.com>
25Cc: Helmut Schaa <helmut.schaa@googlemail.com>
26Cc: Herton Ronaldo Krzesinski <herton@canonical.com>
27Cc: Hin-Tak Leung <htl10@users.sourceforge.net>
28Cc: Larry Finger <Larry.Finger@lwfinger.net>
29Cc: Chaoming Li <chaoming_li@realsil.com.cn>
30Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi>
31Cc: "David S. Miller" <davem@davemloft.net>
32Cc: Roel Kluin <roel.kluin@gmail.com>
33Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
34Cc: Jiri Pirko <jpirko@redhat.com>
35Cc: Pavel Roskin <proski@gnu.org>
36Cc: Yoann DI-RUZZA <y.diruzza@lim.eu>
37Cc: George <george0505@realtek.com>
38Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
39---
40 drivers/net/wireless/libertas/if_usb.c | 24 +-----------------------
41 1 file changed, 1 insertion(+), 23 deletions(-)
42
43diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
44index db879c3..b5fbbc7 100644
45--- a/drivers/net/wireless/libertas/if_usb.c
46+++ b/drivers/net/wireless/libertas/if_usb.c
47@@ -1184,29 +1184,7 @@ static struct usb_driver if_usb_driver = {
48 .reset_resume = if_usb_resume,
49 };
50
51-static int __init if_usb_init_module(void)
52-{
53- int ret = 0;
54-
55- lbs_deb_enter(LBS_DEB_MAIN);
56-
57- ret = usb_register(&if_usb_driver);
58-
59- lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
60- return ret;
61-}
62-
63-static void __exit if_usb_exit_module(void)
64-{
65- lbs_deb_enter(LBS_DEB_MAIN);
66-
67- usb_deregister(&if_usb_driver);
68-
69- lbs_deb_leave(LBS_DEB_MAIN);
70-}
71-
72-module_init(if_usb_init_module);
73-module_exit(if_usb_exit_module);
74+module_usb_driver(if_usb_driver);
75
76 MODULE_DESCRIPTION("8388 USB WLAN Driver");
77 MODULE_AUTHOR("Marvell International Ltd. and Red Hat, Inc.");
78--
791.7.9.5
80
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
new file mode 100644
index 00000000..80d84ed3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch
@@ -0,0 +1,55 @@
1From f5bec38aff7e124933b0ad9b9c6bf0481d01bdfa Mon Sep 17 00:00:00 2001
2From: Rusty Russell <rusty@rustcorp.com.au>
3Date: Mon, 19 Dec 2011 13:56:45 +0000
4Subject: [PATCH 02/16] net: fix assignment of 0/1 to bool variables.
5
6DaveM said:
7 Please, this kind of stuff rots forever and not using bool properly
8 drives me crazy.
9
10Joe Perches <joe@perches.com> gave me the spatch script:
11
12 @@
13 bool b;
14 @@
15 -b = 0
16 +b = false
17 @@
18 bool b;
19 @@
20 -b = 1
21 +b = true
22
23I merely installed coccinelle, read the documentation and took credit.
24
25Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
26Signed-off-by: David S. Miller <davem@davemloft.net>
27---
28 drivers/net/wireless/libertas/if_cs.c | 4 ++--
29 1 file changed, 2 insertions(+), 2 deletions(-)
30
31diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
32index e269351..3f7bf4d 100644
33--- a/drivers/net/wireless/libertas/if_cs.c
34+++ b/drivers/net/wireless/libertas/if_cs.c
35@@ -859,7 +859,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
36 * Most of the libertas cards can do unaligned register access, but some
37 * weird ones cannot. That's especially true for the CF8305 card.
38 */
39- card->align_regs = 0;
40+ card->align_regs = false;
41
42 card->model = get_model(p_dev->manf_id, p_dev->card_id);
43 if (card->model == MODEL_UNKNOWN) {
44@@ -871,7 +871,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
45 /* Check if we have a current silicon */
46 prod_id = if_cs_read8(card, IF_CS_PRODUCT_ID);
47 if (card->model == MODEL_8305) {
48- card->align_regs = 1;
49+ card->align_regs = true;
50 if (prod_id < IF_CS_CF8305_B1_REV) {
51 pr_err("8305 rev B0 and older are not supported\n");
52 ret = -ENODEV;
53--
541.7.9.5
55
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
new file mode 100644
index 00000000..b60661c0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch
@@ -0,0 +1,26 @@
1From 5595b911189c8c9cac230dbe6f76c73352a57fcd Mon Sep 17 00:00:00 2001
2From: Al Viro <viro@zeniv.linux.org.uk>
3Date: Sun, 24 Jul 2011 04:33:43 -0400
4Subject: [PATCH 03/16] switch debugfs to umode_t
5
6Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
7---
8 drivers/net/wireless/libertas/debugfs.c | 2 +-
9 1 file changed, 1 insertion(+), 1 deletion(-)
10
11diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
12index d8d8f0d..c192671 100644
13--- a/drivers/net/wireless/libertas/debugfs.c
14+++ b/drivers/net/wireless/libertas/debugfs.c
15@@ -704,7 +704,7 @@ out_unlock:
16
17 struct lbs_debugfs_files {
18 const char *name;
19- int perm;
20+ umode_t perm;
21 struct file_operations fops;
22 };
23
24--
251.7.9.5
26
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
new file mode 100644
index 00000000..2f034d1b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch
@@ -0,0 +1,54 @@
1From 018746aab6a8f31b27788607c0045489f2996424 Mon Sep 17 00:00:00 2001
2From: Joe Perches <joe@perches.com>
3Date: Sun, 29 Jan 2012 12:56:23 +0000
4Subject: [PATCH 04/16] drivers/net: Remove unnecessary k.alloc/v.alloc OOM
5 messages
6
7alloc failures use dump_stack so emitting an additional
8out-of-memory message is an unnecessary duplication.
9
10Remove the allocation failure messages.
11
12Signed-off-by: Joe Perches <joe@perches.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14---
15 drivers/net/wireless/libertas/if_cs.c | 5 ++---
16 drivers/net/wireless/libertas/if_usb.c | 4 +---
17 2 files changed, 3 insertions(+), 6 deletions(-)
18
19diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
20index 3f7bf4d..234ee88 100644
21--- a/drivers/net/wireless/libertas/if_cs.c
22+++ b/drivers/net/wireless/libertas/if_cs.c
23@@ -815,10 +815,9 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
24 lbs_deb_enter(LBS_DEB_CS);
25
26 card = kzalloc(sizeof(struct if_cs_card), GFP_KERNEL);
27- if (!card) {
28- pr_err("error in kzalloc\n");
29+ if (!card)
30 goto out;
31- }
32+
33 card->p_dev = p_dev;
34 p_dev->priv = card;
35
36diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
37index b5fbbc7..74da5f1 100644
38--- a/drivers/net/wireless/libertas/if_usb.c
39+++ b/drivers/net/wireless/libertas/if_usb.c
40@@ -261,10 +261,8 @@ static int if_usb_probe(struct usb_interface *intf,
41 udev = interface_to_usbdev(intf);
42
43 cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL);
44- if (!cardp) {
45- pr_err("Out of memory allocating private data\n");
46+ if (!cardp)
47 goto error;
48- }
49
50 setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp);
51 init_waitqueue_head(&cardp->fw_wq);
52--
531.7.9.5
54
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
new file mode 100644
index 00000000..d574fde4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch
@@ -0,0 +1,80 @@
1From 5613011f4fa76a08aab30731557cc91699407d11 Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Wed, 14 Mar 2012 22:34:33 +0000
4Subject: [PATCH 05/16] libertas: remove dump_survey implementation
5
6libertas provides a dump_survey implementation based on reading of
7a RSSI value. However, this RSSI value is calculated based on the
8last received beacon from the associated AP - it is not a good
9way of surveying a channel in general, and even causes an error
10if the card is not associated to a network.
11
12As this is not appropriate as a survey, remove it. This fixes an
13issue where something in userspace is repeatedly calling site-survey
14during boot, resulting in many repeated errors as the RSSI value cannot
15be read before associating.
16
17Signed-off-by: Daniel Drake <dsd@laptop.org>
18Signed-off-by: John W. Linville <linville@tuxdriver.com>
19---
20 drivers/net/wireless/libertas/cfg.c | 37 -----------------------------------
21 1 file changed, 37 deletions(-)
22
23diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
24index db64ef1..72e2c8e 100644
25--- a/drivers/net/wireless/libertas/cfg.c
26+++ b/drivers/net/wireless/libertas/cfg.c
27@@ -1628,42 +1628,6 @@ static int lbs_cfg_get_station(struct wiphy *wiphy, struct net_device *dev,
28
29
30 /*
31- * "Site survey", here just current channel and noise level
32- */
33-
34-static int lbs_get_survey(struct wiphy *wiphy, struct net_device *dev,
35- int idx, struct survey_info *survey)
36-{
37- struct lbs_private *priv = wiphy_priv(wiphy);
38- s8 signal, noise;
39- int ret;
40-
41- if (dev == priv->mesh_dev)
42- return -EOPNOTSUPP;
43-
44- if (idx != 0)
45- ret = -ENOENT;
46-
47- lbs_deb_enter(LBS_DEB_CFG80211);
48-
49- survey->channel = ieee80211_get_channel(wiphy,
50- ieee80211_channel_to_frequency(priv->channel,
51- IEEE80211_BAND_2GHZ));
52-
53- ret = lbs_get_rssi(priv, &signal, &noise);
54- if (ret == 0) {
55- survey->filled = SURVEY_INFO_NOISE_DBM;
56- survey->noise = noise;
57- }
58-
59- lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret);
60- return ret;
61-}
62-
63-
64-
65-
66-/*
67 * Change interface
68 */
69
70@@ -2063,7 +2027,6 @@ static struct cfg80211_ops lbs_cfg80211_ops = {
71 .del_key = lbs_cfg_del_key,
72 .set_default_key = lbs_cfg_set_default_key,
73 .get_station = lbs_cfg_get_station,
74- .dump_survey = lbs_get_survey,
75 .change_virtual_intf = lbs_change_intf,
76 .join_ibss = lbs_join_ibss,
77 .leave_ibss = lbs_leave_ibss,
78--
791.7.9.5
80
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch
new file mode 100644
index 00000000..3927d6e0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch
@@ -0,0 +1,95 @@
1From ae3df364b3ec34ab314bcd058e1d3ae86bb8c16f Mon Sep 17 00:00:00 2001
2From: Jesper Juhl <jj@chaosbits.net>
3Date: Mon, 9 Apr 2012 22:51:07 +0200
4Subject: [PATCH 06/16] wireless, libertas: remove redundant NULL tests before
5 calling release_firmware()
6
7release_firmware() tests for, and deals gracefully with, NULL
8pointers. Remove redundant explicit tests before calling the function.
9
10Signed-off-by: Jesper Juhl <jj@chaosbits.net>
11Signed-off-by: John W. Linville <linville@tuxdriver.com>
12---
13 drivers/net/wireless/libertas/if_cs.c | 6 ++----
14 drivers/net/wireless/libertas/if_sdio.c | 6 ++----
15 drivers/net/wireless/libertas/if_spi.c | 6 ++----
16 drivers/net/wireless/libertas/main.c | 12 ++++--------
17 4 files changed, 10 insertions(+), 20 deletions(-)
18
19diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
20index 234ee88..171a06b 100644
21--- a/drivers/net/wireless/libertas/if_cs.c
22+++ b/drivers/net/wireless/libertas/if_cs.c
23@@ -951,10 +951,8 @@ out2:
24 out1:
25 pcmcia_disable_device(p_dev);
26 out:
27- if (helper)
28- release_firmware(helper);
29- if (mainfw)
30- release_firmware(mainfw);
31+ release_firmware(helper);
32+ release_firmware(mainfw);
33
34 lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
35 return ret;
36diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
37index 9804ebc..15bfe2f 100644
38--- a/drivers/net/wireless/libertas/if_sdio.c
39+++ b/drivers/net/wireless/libertas/if_sdio.c
40@@ -751,10 +751,8 @@ success:
41 ret = 0;
42
43 out:
44- if (helper)
45- release_firmware(helper);
46- if (mainfw)
47- release_firmware(mainfw);
48+ release_firmware(helper);
49+ release_firmware(mainfw);
50
51 lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
52 return ret;
53diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
54index 728baa4..46a668e 100644
55--- a/drivers/net/wireless/libertas/if_spi.c
56+++ b/drivers/net/wireless/libertas/if_spi.c
57@@ -1095,10 +1095,8 @@ static int if_spi_init_card(struct if_spi_card *card)
58 goto out;
59
60 out:
61- if (helper)
62- release_firmware(helper);
63- if (mainfw)
64- release_firmware(mainfw);
65+ release_firmware(helper);
66+ release_firmware(mainfw);
67
68 lbs_deb_leave_args(LBS_DEB_SPI, "err %d\n", err);
69
70diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
71index 957681d..3b81b70 100644
72--- a/drivers/net/wireless/libertas/main.c
73+++ b/drivers/net/wireless/libertas/main.c
74@@ -1269,14 +1269,10 @@ int lbs_get_firmware(struct device *dev, const char *user_helper,
75
76 fail:
77 /* Failed */
78- if (*helper) {
79- release_firmware(*helper);
80- *helper = NULL;
81- }
82- if (*mainfw) {
83- release_firmware(*mainfw);
84- *mainfw = NULL;
85- }
86+ release_firmware(*helper);
87+ *helper = NULL;
88+ release_firmware(*mainfw);
89+ *mainfw = NULL;
90
91 return -ENOENT;
92 }
93--
941.7.9.5
95
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
new file mode 100644
index 00000000..3a31eb72
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch
@@ -0,0 +1,48 @@
1From 01e8e6be47e98db59320a593d2854b8bcaad7aca Mon Sep 17 00:00:00 2001
2From: Amitkumar Karwar <akarwar@marvell.com>
3Date: Wed, 28 Mar 2012 11:38:01 -0700
4Subject: [PATCH 07/16] libertas: fix signedness bug in lbs_auth_to_authtype()
5
6Return type for lbs_auth_to_authtype() is changed from "u8" to
7"int" to return negative error code correctly.
8Also an error check is added in connect handler for invalid auth
9type.
10
11Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
12Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
13Signed-off-by: Kiran Divekar <dkiran@marvell.com>
14Signed-off-by: John W. Linville <linville@tuxdriver.com>
15---
16 drivers/net/wireless/libertas/cfg.c | 9 +++++++--
17 1 file changed, 7 insertions(+), 2 deletions(-)
18
19diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
20index 72e2c8e..d5b2177 100644
21--- a/drivers/net/wireless/libertas/cfg.c
22+++ b/drivers/net/wireless/libertas/cfg.c
23@@ -103,7 +103,7 @@ static const u32 cipher_suites[] = {
24 * Convert NL80211's auth_type to the one from Libertas, see chapter 5.9.1
25 * in the firmware spec
26 */
27-static u8 lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
28+static int lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
29 {
30 int ret = -ENOTSUPP;
31
32@@ -1408,7 +1408,12 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev,
33 goto done;
34 }
35
36- lbs_set_authtype(priv, sme);
37+ ret = lbs_set_authtype(priv, sme);
38+ if (ret == -ENOTSUPP) {
39+ wiphy_err(wiphy, "unsupported authtype 0x%x\n", sme->auth_type);
40+ goto done;
41+ }
42+
43 lbs_set_radio(priv, preamble, 1);
44
45 /* Do the actual association */
46--
471.7.9.5
48
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
new file mode 100644
index 00000000..302d0918
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch
@@ -0,0 +1,35 @@
1From c180cacfac2411fa690d5afbb983b53030102a3e Mon Sep 17 00:00:00 2001
2From: Julia Lawall <Julia.Lawall@lip6.fr>
3Date: Mon, 16 Apr 2012 17:44:00 +0200
4Subject: [PATCH 08/16] drivers/net/wireless/libertas/if_usb.c: add missing
5 debugging code
6
7Add a corresponding leave call on error failure.
8
9Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
10Acked-by: Dan Williams <dcbw@redhat.com>
11Signed-off-by: John W. Linville <linville@tuxdriver.com>
12---
13 drivers/net/wireless/libertas/if_usb.c | 6 ++++--
14 1 file changed, 4 insertions(+), 2 deletions(-)
15
16diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
17index 74da5f1..ce4938d 100644
18--- a/drivers/net/wireless/libertas/if_usb.c
19+++ b/drivers/net/wireless/libertas/if_usb.c
20@@ -1128,8 +1128,10 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
21
22 lbs_deb_enter(LBS_DEB_USB);
23
24- if (priv->psstate != PS_STATE_FULL_POWER)
25- return -1;
26+ if (priv->psstate != PS_STATE_FULL_POWER) {
27+ ret = -1;
28+ goto out;
29+ }
30
31 #ifdef CONFIG_OLPC
32 if (machine_is_olpc()) {
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch
new file mode 100644
index 00000000..0a97c965
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch
@@ -0,0 +1,618 @@
1From d9087fc723bf7947eb149fb657072a8b3f96a532 Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Mon, 16 Apr 2012 23:52:42 +0100
4Subject: [PATCH 09/16] libertas: Firmware loading simplifications
5
6Remove the ability to pass module parameters with firmware filenames
7for USB and SDIO interfaces.
8
9Remove the ability to pass custom "user" filenames to lbs_get_firmware().
10
11Remove the ability to reprogram internal device memory with a different
12firmware from the USB driver (we don't know of any users), and simplify
13the OLPC firmware loading quirk to simply placing the OLPC firmware
14at the top of the list (we don't know of any users other than OLPC).
15
16Move lbs_get_firmware() into its own file.
17
18These simplifications should have no real-life effect but make the
19upcoming transition to asynchronous firmware loading considerably less
20painful.
21
22Signed-off-by: Daniel Drake <dsd@laptop.org>
23Acked-by: Dan Williams <dcbw@redhat.com>
24Signed-off-by: John W. Linville <linville@tuxdriver.com>
25---
26 drivers/net/wireless/libertas/Makefile | 1 +
27 drivers/net/wireless/libertas/decl.h | 3 +-
28 drivers/net/wireless/libertas/firmware.c | 79 ++++++++++++++
29 drivers/net/wireless/libertas/if_cs.c | 4 +-
30 drivers/net/wireless/libertas/if_sdio.c | 25 +----
31 drivers/net/wireless/libertas/if_spi.c | 5 +-
32 drivers/net/wireless/libertas/if_usb.c | 169 ++----------------------------
33 drivers/net/wireless/libertas/main.c | 101 ------------------
34 8 files changed, 94 insertions(+), 293 deletions(-)
35 create mode 100644 drivers/net/wireless/libertas/firmware.c
36
37diff --git a/drivers/net/wireless/libertas/Makefile b/drivers/net/wireless/libertas/Makefile
38index f7d01bf..eac72f7 100644
39--- a/drivers/net/wireless/libertas/Makefile
40+++ b/drivers/net/wireless/libertas/Makefile
41@@ -6,6 +6,7 @@ libertas-y += ethtool.o
42 libertas-y += main.o
43 libertas-y += rx.o
44 libertas-y += tx.o
45+libertas-y += firmware.o
46 libertas-$(CONFIG_LIBERTAS_MESH) += mesh.o
47
48 usb8xxx-objs += if_usb.o
49diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
50index bc951ab..2fb2e31 100644
51--- a/drivers/net/wireless/libertas/decl.h
52+++ b/drivers/net/wireless/libertas/decl.h
53@@ -66,8 +66,7 @@ int lbs_exit_auto_deep_sleep(struct lbs_private *priv);
54 u32 lbs_fw_index_to_data_rate(u8 index);
55 u8 lbs_data_rate_to_fw_index(u32 rate);
56
57-int lbs_get_firmware(struct device *dev, const char *user_helper,
58- const char *user_mainfw, u32 card_model,
59+int lbs_get_firmware(struct device *dev, u32 card_model,
60 const struct lbs_fw_table *fw_table,
61 const struct firmware **helper,
62 const struct firmware **mainfw);
63diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
64new file mode 100644
65index 0000000..0c8c845
66--- /dev/null
67+++ b/drivers/net/wireless/libertas/firmware.c
68@@ -0,0 +1,79 @@
69+/*
70+ * Firmware loading and handling functions.
71+ */
72+
73+#include <linux/firmware.h>
74+#include <linux/module.h>
75+
76+#include "decl.h"
77+
78+/**
79+ * lbs_get_firmware - Retrieves two-stage firmware
80+ *
81+ * @dev: A pointer to &device structure
82+ * @card_model: Bus-specific card model ID used to filter firmware table
83+ * elements
84+ * @fw_table: Table of firmware file names and device model numbers
85+ * terminated by an entry with a NULL helper name
86+ * @helper: On success, the helper firmware; caller must free
87+ * @mainfw: On success, the main firmware; caller must free
88+ *
89+ * returns: 0 on success, non-zero on failure
90+ */
91+int lbs_get_firmware(struct device *dev, u32 card_model,
92+ const struct lbs_fw_table *fw_table,
93+ const struct firmware **helper,
94+ const struct firmware **mainfw)
95+{
96+ const struct lbs_fw_table *iter;
97+ int ret;
98+
99+ BUG_ON(helper == NULL);
100+ BUG_ON(mainfw == NULL);
101+
102+ /* Search for firmware to use from the table. */
103+ iter = fw_table;
104+ while (iter && iter->helper) {
105+ if (iter->model != card_model)
106+ goto next;
107+
108+ if (*helper == NULL) {
109+ ret = request_firmware(helper, iter->helper, dev);
110+ if (ret)
111+ goto next;
112+
113+ /* If the device has one-stage firmware (ie cf8305) and
114+ * we've got it then we don't need to bother with the
115+ * main firmware.
116+ */
117+ if (iter->fwname == NULL)
118+ return 0;
119+ }
120+
121+ if (*mainfw == NULL) {
122+ ret = request_firmware(mainfw, iter->fwname, dev);
123+ if (ret) {
124+ /* Clear the helper to ensure we don't have
125+ * mismatched firmware pairs.
126+ */
127+ release_firmware(*helper);
128+ *helper = NULL;
129+ }
130+ }
131+
132+ if (*helper && *mainfw)
133+ return 0;
134+
135+ next:
136+ iter++;
137+ }
138+
139+ /* Failed */
140+ release_firmware(*helper);
141+ *helper = NULL;
142+ release_firmware(*mainfw);
143+ *mainfw = NULL;
144+
145+ return -ENOENT;
146+}
147+EXPORT_SYMBOL_GPL(lbs_get_firmware);
148diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
149index 171a06b..cee5052 100644
150--- a/drivers/net/wireless/libertas/if_cs.c
151+++ b/drivers/net/wireless/libertas/if_cs.c
152@@ -890,8 +890,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
153 goto out2;
154 }
155
156- ret = lbs_get_firmware(&p_dev->dev, NULL, NULL, card->model,
157- &fw_table[0], &helper, &mainfw);
158+ ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
159+ &helper, &mainfw);
160 if (ret) {
161 pr_err("failed to find firmware (%d)\n", ret);
162 goto out2;
163diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
164index 15bfe2f..6590feb 100644
165--- a/drivers/net/wireless/libertas/if_sdio.c
166+++ b/drivers/net/wireless/libertas/if_sdio.c
167@@ -65,12 +65,6 @@ static void if_sdio_interrupt(struct sdio_func *func);
168 */
169 static u8 user_rmmod;
170
171-static char *lbs_helper_name = NULL;
172-module_param_named(helper_name, lbs_helper_name, charp, 0644);
173-
174-static char *lbs_fw_name = NULL;
175-module_param_named(fw_name, lbs_fw_name, charp, 0644);
176-
177 static const struct sdio_device_id if_sdio_ids[] = {
178 { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL,
179 SDIO_DEVICE_ID_MARVELL_LIBERTAS) },
180@@ -124,11 +118,6 @@ struct if_sdio_card {
181 unsigned long ioport;
182 unsigned int scratch_reg;
183
184- const char *helper;
185- const char *firmware;
186- bool helper_allocated;
187- bool firmware_allocated;
188-
189 u8 buffer[65536] __attribute__((aligned(4)));
190
191 spinlock_t lock;
192@@ -725,8 +714,8 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
193 goto success;
194 }
195
196- ret = lbs_get_firmware(&card->func->dev, lbs_helper_name, lbs_fw_name,
197- card->model, &fw_table[0], &helper, &mainfw);
198+ ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
199+ &helper, &mainfw);
200 if (ret) {
201 pr_err("failed to find firmware (%d)\n", ret);
202 goto out;
203@@ -1242,10 +1231,6 @@ free:
204 kfree(packet);
205 }
206
207- if (card->helper_allocated)
208- kfree(card->helper);
209- if (card->firmware_allocated)
210- kfree(card->firmware);
211 kfree(card);
212
213 goto out;
214@@ -1293,12 +1278,6 @@ static void if_sdio_remove(struct sdio_func *func)
215 kfree(packet);
216 }
217
218- if (card->helper_allocated)
219- kfree(card->helper);
220- if (card->firmware_allocated)
221- kfree(card->firmware);
222- kfree(card);
223-
224 lbs_deb_leave(LBS_DEB_SDIO);
225 }
226
227diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
228index 46a668e..56b0081 100644
229--- a/drivers/net/wireless/libertas/if_spi.c
230+++ b/drivers/net/wireless/libertas/if_spi.c
231@@ -1064,9 +1064,8 @@ static int if_spi_init_card(struct if_spi_card *card)
232 goto out;
233 }
234
235- err = lbs_get_firmware(&card->spi->dev, NULL, NULL,
236- card->card_id, &fw_table[0], &helper,
237- &mainfw);
238+ err = lbs_get_firmware(&card->spi->dev, card->card_id,
239+ &fw_table[0], &helper, &mainfw);
240 if (err) {
241 netdev_err(priv->dev, "failed to find firmware (%d)\n",
242 err);
243diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
244index ce4938d..f29471b 100644
245--- a/drivers/net/wireless/libertas/if_usb.c
246+++ b/drivers/net/wireless/libertas/if_usb.c
247@@ -29,9 +29,6 @@
248
249 #define MESSAGE_HEADER_LEN 4
250
251-static char *lbs_fw_name = NULL;
252-module_param_named(fw_name, lbs_fw_name, charp, 0644);
253-
254 MODULE_FIRMWARE("libertas/usb8388_v9.bin");
255 MODULE_FIRMWARE("libertas/usb8388_v5.bin");
256 MODULE_FIRMWARE("libertas/usb8388.bin");
257@@ -55,10 +52,7 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
258
259 static void if_usb_receive(struct urb *urb);
260 static void if_usb_receive_fwload(struct urb *urb);
261-static int __if_usb_prog_firmware(struct if_usb_card *cardp,
262- const char *fwname, int cmd);
263-static int if_usb_prog_firmware(struct if_usb_card *cardp,
264- const char *fwname, int cmd);
265+static int if_usb_prog_firmware(struct if_usb_card *cardp);
266 static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
267 uint8_t *payload, uint16_t nb);
268 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
269@@ -67,69 +61,6 @@ static void if_usb_free(struct if_usb_card *cardp);
270 static int if_usb_submit_rx_urb(struct if_usb_card *cardp);
271 static int if_usb_reset_device(struct if_usb_card *cardp);
272
273-/* sysfs hooks */
274-
275-/*
276- * Set function to write firmware to device's persistent memory
277- */
278-static ssize_t if_usb_firmware_set(struct device *dev,
279- struct device_attribute *attr, const char *buf, size_t count)
280-{
281- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
282- struct if_usb_card *cardp = priv->card;
283- int ret;
284-
285- BUG_ON(buf == NULL);
286-
287- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_FW);
288- if (ret == 0)
289- return count;
290-
291- return ret;
292-}
293-
294-/*
295- * lbs_flash_fw attribute to be exported per ethX interface through sysfs
296- * (/sys/class/net/ethX/lbs_flash_fw). Use this like so to write firmware to
297- * the device's persistent memory:
298- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_fw
299- */
300-static DEVICE_ATTR(lbs_flash_fw, 0200, NULL, if_usb_firmware_set);
301-
302-/**
303- * if_usb_boot2_set - write firmware to device's persistent memory
304- *
305- * @dev: target device
306- * @attr: device attributes
307- * @buf: firmware buffer to write
308- * @count: number of bytes to write
309- *
310- * returns: number of bytes written or negative error code
311- */
312-static ssize_t if_usb_boot2_set(struct device *dev,
313- struct device_attribute *attr, const char *buf, size_t count)
314-{
315- struct lbs_private *priv = to_net_dev(dev)->ml_priv;
316- struct if_usb_card *cardp = priv->card;
317- int ret;
318-
319- BUG_ON(buf == NULL);
320-
321- ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_BOOT2);
322- if (ret == 0)
323- return count;
324-
325- return ret;
326-}
327-
328-/*
329- * lbs_flash_boot2 attribute to be exported per ethX interface through sysfs
330- * (/sys/class/net/ethX/lbs_flash_boot2). Use this like so to write firmware
331- * to the device's persistent memory:
332- * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_boot2
333- */
334-static DEVICE_ATTR(lbs_flash_boot2, 0200, NULL, if_usb_boot2_set);
335-
336 /**
337 * if_usb_write_bulk_callback - callback function to handle the status
338 * of the URB
339@@ -314,13 +245,10 @@ static int if_usb_probe(struct usb_interface *intf,
340 }
341
342 /* Upload firmware */
343- kparam_block_sysfs_write(fw_name);
344- if (__if_usb_prog_firmware(cardp, lbs_fw_name, BOOT_CMD_FW_BY_USB)) {
345- kparam_unblock_sysfs_write(fw_name);
346+ if (if_usb_prog_firmware(cardp)) {
347 lbs_deb_usbd(&udev->dev, "FW upload failed\n");
348 goto err_prog_firmware;
349 }
350- kparam_unblock_sysfs_write(fw_name);
351
352 if (!(priv = lbs_add_card(cardp, &intf->dev)))
353 goto err_prog_firmware;
354@@ -349,14 +277,6 @@ static int if_usb_probe(struct usb_interface *intf,
355 usb_get_dev(udev);
356 usb_set_intfdata(intf, cardp);
357
358- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_fw))
359- netdev_err(priv->dev,
360- "cannot register lbs_flash_fw attribute\n");
361-
362- if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2))
363- netdev_err(priv->dev,
364- "cannot register lbs_flash_boot2 attribute\n");
365-
366 /*
367 * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
368 */
369@@ -389,9 +309,6 @@ static void if_usb_disconnect(struct usb_interface *intf)
370
371 lbs_deb_enter(LBS_DEB_MAIN);
372
373- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2);
374- device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_fw);
375-
376 cardp->surprise_removed = 1;
377
378 if (priv) {
379@@ -912,58 +829,12 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
380 return ret;
381 }
382
383-
384-/**
385-* if_usb_prog_firmware - programs the firmware subject to cmd
386-*
387-* @cardp: the if_usb_card descriptor
388-* @fwname: firmware or boot2 image file name
389-* @cmd: either BOOT_CMD_FW_BY_USB, BOOT_CMD_UPDATE_FW,
390-* or BOOT_CMD_UPDATE_BOOT2.
391-* returns: 0 or error code
392-*/
393-static int if_usb_prog_firmware(struct if_usb_card *cardp,
394- const char *fwname, int cmd)
395-{
396- struct lbs_private *priv = cardp->priv;
397- unsigned long flags, caps;
398- int ret;
399-
400- caps = priv->fwcapinfo;
401- if (((cmd == BOOT_CMD_UPDATE_FW) && !(caps & FW_CAPINFO_FIRMWARE_UPGRADE)) ||
402- ((cmd == BOOT_CMD_UPDATE_BOOT2) && !(caps & FW_CAPINFO_BOOT2_UPGRADE)))
403- return -EOPNOTSUPP;
404-
405- /* Ensure main thread is idle. */
406- spin_lock_irqsave(&priv->driver_lock, flags);
407- while (priv->cur_cmd != NULL || priv->dnld_sent != DNLD_RES_RECEIVED) {
408- spin_unlock_irqrestore(&priv->driver_lock, flags);
409- if (wait_event_interruptible(priv->waitq,
410- (priv->cur_cmd == NULL &&
411- priv->dnld_sent == DNLD_RES_RECEIVED))) {
412- return -ERESTARTSYS;
413- }
414- spin_lock_irqsave(&priv->driver_lock, flags);
415- }
416- priv->dnld_sent = DNLD_BOOTCMD_SENT;
417- spin_unlock_irqrestore(&priv->driver_lock, flags);
418-
419- ret = __if_usb_prog_firmware(cardp, fwname, cmd);
420-
421- spin_lock_irqsave(&priv->driver_lock, flags);
422- priv->dnld_sent = DNLD_RES_RECEIVED;
423- spin_unlock_irqrestore(&priv->driver_lock, flags);
424-
425- wake_up(&priv->waitq);
426-
427- return ret;
428-}
429-
430 /* table of firmware file names */
431 static const struct {
432 u32 model;
433 const char *fwname;
434 } fw_table[] = {
435+ { MODEL_8388, "libertas/usb8388_olpc.bin" },
436 { MODEL_8388, "libertas/usb8388_v9.bin" },
437 { MODEL_8388, "libertas/usb8388_v5.bin" },
438 { MODEL_8388, "libertas/usb8388.bin" },
439@@ -971,35 +842,10 @@ static const struct {
440 { MODEL_8682, "libertas/usb8682.bin" }
441 };
442
443-#ifdef CONFIG_OLPC
444-
445-static int try_olpc_fw(struct if_usb_card *cardp)
446-{
447- int retval = -ENOENT;
448-
449- /* try the OLPC firmware first; fall back to fw_table list */
450- if (machine_is_olpc() && cardp->model == MODEL_8388)
451- retval = request_firmware(&cardp->fw,
452- "libertas/usb8388_olpc.bin", &cardp->udev->dev);
453- return retval;
454-}
455-
456-#else
457-static int try_olpc_fw(struct if_usb_card *cardp) { return -ENOENT; }
458-#endif /* !CONFIG_OLPC */
459-
460-static int get_fw(struct if_usb_card *cardp, const char *fwname)
461+static int get_fw(struct if_usb_card *cardp)
462 {
463 int i;
464
465- /* Try user-specified firmware first */
466- if (fwname)
467- return request_firmware(&cardp->fw, fwname, &cardp->udev->dev);
468-
469- /* Handle OLPC firmware */
470- if (try_olpc_fw(cardp) == 0)
471- return 0;
472-
473 /* Otherwise search for firmware to use */
474 for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
475 if (fw_table[i].model != cardp->model)
476@@ -1012,8 +858,7 @@ static int get_fw(struct if_usb_card *cardp, const char *fwname)
477 return -ENOENT;
478 }
479
480-static int __if_usb_prog_firmware(struct if_usb_card *cardp,
481- const char *fwname, int cmd)
482+static int if_usb_prog_firmware(struct if_usb_card *cardp)
483 {
484 int i = 0;
485 static int reset_count = 10;
486@@ -1021,7 +866,7 @@ static int __if_usb_prog_firmware(struct if_usb_card *cardp,
487
488 lbs_deb_enter(LBS_DEB_USB);
489
490- ret = get_fw(cardp, fwname);
491+ ret = get_fw(cardp);
492 if (ret) {
493 pr_err("failed to find firmware (%d)\n", ret);
494 goto done;
495@@ -1053,7 +898,7 @@ restart:
496 do {
497 int j = 0;
498 i++;
499- if_usb_issue_boot_command(cardp, cmd);
500+ if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
501 /* wait for command response */
502 do {
503 j++;
504diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
505index 3b81b70..fa09585 100644
506--- a/drivers/net/wireless/libertas/main.c
507+++ b/drivers/net/wireless/libertas/main.c
508@@ -1177,107 +1177,6 @@ void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx)
509 }
510 EXPORT_SYMBOL_GPL(lbs_notify_command_response);
511
512-/**
513- * lbs_get_firmware - Retrieves two-stage firmware
514- *
515- * @dev: A pointer to &device structure
516- * @user_helper: User-defined helper firmware file
517- * @user_mainfw: User-defined main firmware file
518- * @card_model: Bus-specific card model ID used to filter firmware table
519- * elements
520- * @fw_table: Table of firmware file names and device model numbers
521- * terminated by an entry with a NULL helper name
522- * @helper: On success, the helper firmware; caller must free
523- * @mainfw: On success, the main firmware; caller must free
524- *
525- * returns: 0 on success, non-zero on failure
526- */
527-int lbs_get_firmware(struct device *dev, const char *user_helper,
528- const char *user_mainfw, u32 card_model,
529- const struct lbs_fw_table *fw_table,
530- const struct firmware **helper,
531- const struct firmware **mainfw)
532-{
533- const struct lbs_fw_table *iter;
534- int ret;
535-
536- BUG_ON(helper == NULL);
537- BUG_ON(mainfw == NULL);
538-
539- /* Try user-specified firmware first */
540- if (user_helper) {
541- ret = request_firmware(helper, user_helper, dev);
542- if (ret) {
543- dev_err(dev, "couldn't find helper firmware %s\n",
544- user_helper);
545- goto fail;
546- }
547- }
548- if (user_mainfw) {
549- ret = request_firmware(mainfw, user_mainfw, dev);
550- if (ret) {
551- dev_err(dev, "couldn't find main firmware %s\n",
552- user_mainfw);
553- goto fail;
554- }
555- }
556-
557- if (*helper && *mainfw)
558- return 0;
559-
560- /* Otherwise search for firmware to use. If neither the helper or
561- * the main firmware were specified by the user, then we need to
562- * make sure that found helper & main are from the same entry in
563- * fw_table.
564- */
565- iter = fw_table;
566- while (iter && iter->helper) {
567- if (iter->model != card_model)
568- goto next;
569-
570- if (*helper == NULL) {
571- ret = request_firmware(helper, iter->helper, dev);
572- if (ret)
573- goto next;
574-
575- /* If the device has one-stage firmware (ie cf8305) and
576- * we've got it then we don't need to bother with the
577- * main firmware.
578- */
579- if (iter->fwname == NULL)
580- return 0;
581- }
582-
583- if (*mainfw == NULL) {
584- ret = request_firmware(mainfw, iter->fwname, dev);
585- if (ret && !user_helper) {
586- /* Clear the helper if it wasn't user-specified
587- * and the main firmware load failed, to ensure
588- * we don't have mismatched firmware pairs.
589- */
590- release_firmware(*helper);
591- *helper = NULL;
592- }
593- }
594-
595- if (*helper && *mainfw)
596- return 0;
597-
598- next:
599- iter++;
600- }
601-
602- fail:
603- /* Failed */
604- release_firmware(*helper);
605- *helper = NULL;
606- release_firmware(*mainfw);
607- *mainfw = NULL;
608-
609- return -ENOENT;
610-}
611-EXPORT_SYMBOL_GPL(lbs_get_firmware);
612-
613 static int __init lbs_init_module(void)
614 {
615 lbs_deb_enter(LBS_DEB_MAIN);
616--
6171.7.9.5
618
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch
new file mode 100644
index 00000000..6560442b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch
@@ -0,0 +1,46 @@
1From 0afc10c9a90bdda020d6a8c03e3bfbb1103cdc5e Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Mon, 16 Apr 2012 23:53:02 +0100
4Subject: [PATCH 10/16] libertas: harden-up exit paths
5
6These simple sanity check avoids extra complexity in error paths when
7moving to asynchronous firmware loading (which means the device may fail to
8init some time after its creation).
9
10Signed-off-by: Daniel Drake <dsd@laptop.org>
11Acked-by: Dan Williams <dcbw@redhat.com>
12Signed-off-by: John W. Linville <linville@tuxdriver.com>
13---
14 drivers/net/wireless/libertas/main.c | 9 ++++++++-
15 1 file changed, 8 insertions(+), 1 deletion(-)
16
17diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
18index fa09585..7eaf992 100644
19--- a/drivers/net/wireless/libertas/main.c
20+++ b/drivers/net/wireless/libertas/main.c
21@@ -1033,7 +1033,9 @@ void lbs_remove_card(struct lbs_private *priv)
22 lbs_deb_enter(LBS_DEB_MAIN);
23
24 lbs_remove_mesh(priv);
25- lbs_scan_deinit(priv);
26+
27+ if (priv->wiphy_registered)
28+ lbs_scan_deinit(priv);
29
30 /* worker thread destruction blocks on the in-flight command which
31 * should have been cleared already in lbs_stop_card().
32@@ -1128,6 +1130,11 @@ void lbs_stop_card(struct lbs_private *priv)
33 goto out;
34 dev = priv->dev;
35
36+ /* If the netdev isn't registered, it means that lbs_start_card() was
37+ * never called so we have nothing to do here. */
38+ if (dev->reg_state != NETREG_REGISTERED)
39+ goto out;
40+
41 netif_stop_queue(dev);
42 netif_carrier_off(dev);
43
44--
451.7.9.5
46
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch
new file mode 100644
index 00000000..4a314100
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch
@@ -0,0 +1,269 @@
1From fb2e4573ebd25fff393594d8795bfd27bffee345 Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Mon, 16 Apr 2012 23:53:26 +0100
4Subject: [PATCH 11/16] libertas: add asynchronous firmware loading capability
5
6As described at
7http://article.gmane.org/gmane.linux.kernel.wireless.general/86084
8libertas is taking a long time to load because it loads firmware
9during module loading.
10
11Add a new API for interface drivers to load their firmware
12asynchronously. The same semantics of the firmware table are followed
13like before.
14
15Interface drivers will be converted in follow-up patches, then we can
16remove the old, synchronous firmware loading function.
17
18Signed-off-by: Daniel Drake <dsd@laptop.org>
19Acked-by: Dan Williams <dcbw@redhat.com>
20Signed-off-by: John W. Linville <linville@tuxdriver.com>
21---
22 drivers/net/wireless/libertas/decl.h | 8 ++
23 drivers/net/wireless/libertas/dev.h | 10 +++
24 drivers/net/wireless/libertas/firmware.c | 143 ++++++++++++++++++++++++++++++
25 drivers/net/wireless/libertas/main.c | 3 +
26 4 files changed, 164 insertions(+)
27
28diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
29index 2fb2e31..84a3aa7 100644
30--- a/drivers/net/wireless/libertas/decl.h
31+++ b/drivers/net/wireless/libertas/decl.h
32@@ -19,6 +19,10 @@ struct lbs_fw_table {
33 };
34
35 struct lbs_private;
36+typedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret,
37+ const struct firmware *helper, const struct firmware *mainfw);
38+
39+struct lbs_private;
40 struct sk_buff;
41 struct net_device;
42 struct cmd_ds_command;
43@@ -70,5 +74,9 @@ int lbs_get_firmware(struct device *dev, u32 card_model,
44 const struct lbs_fw_table *fw_table,
45 const struct firmware **helper,
46 const struct firmware **mainfw);
47+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
48+ u32 card_model, const struct lbs_fw_table *fw_table,
49+ lbs_fw_cb callback);
50+void lbs_wait_for_firmware_load(struct lbs_private *priv);
51
52 #endif
53diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
54index f3fd447..6720054 100644
55--- a/drivers/net/wireless/libertas/dev.h
56+++ b/drivers/net/wireless/libertas/dev.h
57@@ -7,6 +7,7 @@
58 #define _LBS_DEV_H_
59
60 #include "defs.h"
61+#include "decl.h"
62 #include "host.h"
63
64 #include <linux/kfifo.h>
65@@ -180,6 +181,15 @@ struct lbs_private {
66 wait_queue_head_t scan_q;
67 /* Whether the scan was initiated internally and not by cfg80211 */
68 bool internal_scan;
69+
70+ /* Firmware load */
71+ u32 fw_model;
72+ wait_queue_head_t fw_waitq;
73+ struct device *fw_device;
74+ const struct firmware *helper_fw;
75+ const struct lbs_fw_table *fw_table;
76+ const struct lbs_fw_table *fw_iter;
77+ lbs_fw_cb fw_callback;
78 };
79
80 extern struct cmd_confirm_sleep confirm_sleep;
81diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
82index 0c8c845..cd23f1a 100644
83--- a/drivers/net/wireless/libertas/firmware.c
84+++ b/drivers/net/wireless/libertas/firmware.c
85@@ -3,10 +3,151 @@
86 */
87
88 #include <linux/firmware.h>
89+#include <linux/firmware.h>
90 #include <linux/module.h>
91
92+#include "dev.h"
93 #include "decl.h"
94
95+static void load_next_firmware_from_table(struct lbs_private *private);
96+
97+static void lbs_fw_loaded(struct lbs_private *priv, int ret,
98+ const struct firmware *helper, const struct firmware *mainfw)
99+{
100+ unsigned long flags;
101+
102+ lbs_deb_fw("firmware load complete, code %d\n", ret);
103+
104+ /* User must free helper/mainfw */
105+ priv->fw_callback(priv, ret, helper, mainfw);
106+
107+ spin_lock_irqsave(&priv->driver_lock, flags);
108+ priv->fw_callback = NULL;
109+ wake_up(&priv->fw_waitq);
110+ spin_unlock_irqrestore(&priv->driver_lock, flags);
111+}
112+
113+static void do_load_firmware(struct lbs_private *priv, const char *name,
114+ void (*cb)(const struct firmware *fw, void *context))
115+{
116+ int ret;
117+
118+ lbs_deb_fw("Requesting %s\n", name);
119+ ret = request_firmware_nowait(THIS_MODULE, true, name,
120+ priv->fw_device, GFP_KERNEL, priv, cb);
121+ if (ret) {
122+ lbs_deb_fw("request_firmware_nowait error %d\n", ret);
123+ lbs_fw_loaded(priv, ret, NULL, NULL);
124+ }
125+}
126+
127+static void main_firmware_cb(const struct firmware *firmware, void *context)
128+{
129+ struct lbs_private *priv = context;
130+
131+ if (!firmware) {
132+ /* Failed to find firmware: try next table entry */
133+ load_next_firmware_from_table(priv);
134+ return;
135+ }
136+
137+ /* Firmware found! */
138+ lbs_fw_loaded(priv, 0, priv->helper_fw, firmware);
139+}
140+
141+static void helper_firmware_cb(const struct firmware *firmware, void *context)
142+{
143+ struct lbs_private *priv = context;
144+
145+ if (!firmware) {
146+ /* Failed to find firmware: try next table entry */
147+ load_next_firmware_from_table(priv);
148+ return;
149+ }
150+
151+ /* Firmware found! */
152+ if (priv->fw_iter->fwname) {
153+ priv->helper_fw = firmware;
154+ do_load_firmware(priv, priv->fw_iter->fwname, main_firmware_cb);
155+ } else {
156+ /* No main firmware needed for this helper --> success! */
157+ lbs_fw_loaded(priv, 0, firmware, NULL);
158+ }
159+}
160+
161+static void load_next_firmware_from_table(struct lbs_private *priv)
162+{
163+ const struct lbs_fw_table *iter;
164+
165+ if (!priv->fw_iter)
166+ iter = priv->fw_table;
167+ else
168+ iter = ++priv->fw_iter;
169+
170+ if (priv->helper_fw) {
171+ release_firmware(priv->helper_fw);
172+ priv->helper_fw = NULL;
173+ }
174+
175+next:
176+ if (!iter->helper) {
177+ /* End of table hit. */
178+ lbs_fw_loaded(priv, -ENOENT, NULL, NULL);
179+ return;
180+ }
181+
182+ if (iter->model != priv->fw_model) {
183+ iter++;
184+ goto next;
185+ }
186+
187+ priv->fw_iter = iter;
188+ do_load_firmware(priv, iter->helper, helper_firmware_cb);
189+}
190+
191+void lbs_wait_for_firmware_load(struct lbs_private *priv)
192+{
193+ wait_event(priv->fw_waitq, priv->fw_callback == NULL);
194+}
195+
196+/**
197+ * lbs_get_firmware_async - Retrieves firmware asynchronously. Can load
198+ * either a helper firmware and a main firmware (2-stage), or just the helper.
199+ *
200+ * @priv: Pointer to lbs_private instance
201+ * @dev: A pointer to &device structure
202+ * @card_model: Bus-specific card model ID used to filter firmware table
203+ * elements
204+ * @fw_table: Table of firmware file names and device model numbers
205+ * terminated by an entry with a NULL helper name
206+ * @callback: User callback to invoke when firmware load succeeds or fails.
207+ */
208+int lbs_get_firmware_async(struct lbs_private *priv, struct device *device,
209+ u32 card_model, const struct lbs_fw_table *fw_table,
210+ lbs_fw_cb callback)
211+{
212+ unsigned long flags;
213+
214+ spin_lock_irqsave(&priv->driver_lock, flags);
215+ if (priv->fw_callback) {
216+ lbs_deb_fw("firmware load already in progress\n");
217+ spin_unlock_irqrestore(&priv->driver_lock, flags);
218+ return -EBUSY;
219+ }
220+
221+ priv->fw_device = device;
222+ priv->fw_callback = callback;
223+ priv->fw_table = fw_table;
224+ priv->fw_iter = NULL;
225+ priv->fw_model = card_model;
226+ spin_unlock_irqrestore(&priv->driver_lock, flags);
227+
228+ lbs_deb_fw("Starting async firmware load\n");
229+ load_next_firmware_from_table(priv);
230+ return 0;
231+}
232+EXPORT_SYMBOL_GPL(lbs_get_firmware_async);
233+
234 /**
235 * lbs_get_firmware - Retrieves two-stage firmware
236 *
237@@ -18,6 +159,8 @@
238 * @helper: On success, the helper firmware; caller must free
239 * @mainfw: On success, the main firmware; caller must free
240 *
241+ * Deprecated: use lbs_get_firmware_async() instead.
242+ *
243 * returns: 0 on success, non-zero on failure
244 */
245 int lbs_get_firmware(struct device *dev, u32 card_model,
246diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
247index 7eaf992..e96ee0a 100644
248--- a/drivers/net/wireless/libertas/main.c
249+++ b/drivers/net/wireless/libertas/main.c
250@@ -878,6 +878,7 @@ static int lbs_init_adapter(struct lbs_private *priv)
251 priv->is_host_sleep_configured = 0;
252 priv->is_host_sleep_activated = 0;
253 init_waitqueue_head(&priv->host_sleep_q);
254+ init_waitqueue_head(&priv->fw_waitq);
255 mutex_init(&priv->lock);
256
257 setup_timer(&priv->command_timer, lbs_cmd_timeout_handler,
258@@ -1037,6 +1038,8 @@ void lbs_remove_card(struct lbs_private *priv)
259 if (priv->wiphy_registered)
260 lbs_scan_deinit(priv);
261
262+ lbs_wait_for_firmware_load(priv);
263+
264 /* worker thread destruction blocks on the in-flight command which
265 * should have been cleared already in lbs_stop_card().
266 */
267--
2681.7.9.5
269
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
new file mode 100644
index 00000000..f02684e8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch
@@ -0,0 +1,320 @@
1From f7b34bebb4f8b39535cf5decdab7134ffdf69186 Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Mon, 16 Apr 2012 23:53:43 +0100
4Subject: [PATCH 12/16] libertas SDIO: convert to asynchronous firmware
5 loading
6
7Signed-off-by: Daniel Drake <dsd@laptop.org>
8Acked-by: Dan Williams <dcbw@redhat.com>
9Signed-off-by: John W. Linville <linville@tuxdriver.com>
10---
11 drivers/net/wireless/libertas/if_sdio.c | 206 ++++++++++++++++++-------------
12 1 file changed, 121 insertions(+), 85 deletions(-)
13
14diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
15index 6590feb..76caeba 100644
16--- a/drivers/net/wireless/libertas/if_sdio.c
17+++ b/drivers/net/wireless/libertas/if_sdio.c
18@@ -117,6 +117,8 @@ struct if_sdio_card {
19 int model;
20 unsigned long ioport;
21 unsigned int scratch_reg;
22+ bool started;
23+ wait_queue_head_t pwron_waitq;
24
25 u8 buffer[65536] __attribute__((aligned(4)));
26
27@@ -129,6 +131,9 @@ struct if_sdio_card {
28 u8 rx_unit;
29 };
30
31+static void if_sdio_finish_power_on(struct if_sdio_card *card);
32+static int if_sdio_power_off(struct if_sdio_card *card);
33+
34 /********************************************************************/
35 /* I/O */
36 /********************************************************************/
37@@ -669,12 +674,39 @@ out:
38 return ret;
39 }
40
41+static void if_sdio_do_prog_firmware(struct lbs_private *priv, int ret,
42+ const struct firmware *helper,
43+ const struct firmware *mainfw)
44+{
45+ struct if_sdio_card *card = priv->card;
46+
47+ if (ret) {
48+ pr_err("failed to find firmware (%d)\n", ret);
49+ return;
50+ }
51+
52+ ret = if_sdio_prog_helper(card, helper);
53+ if (ret)
54+ goto out;
55+
56+ lbs_deb_sdio("Helper firmware loaded\n");
57+
58+ ret = if_sdio_prog_real(card, mainfw);
59+ if (ret)
60+ goto out;
61+
62+ lbs_deb_sdio("Firmware loaded\n");
63+ if_sdio_finish_power_on(card);
64+
65+out:
66+ release_firmware(helper);
67+ release_firmware(mainfw);
68+}
69+
70 static int if_sdio_prog_firmware(struct if_sdio_card *card)
71 {
72 int ret;
73 u16 scratch;
74- const struct firmware *helper = NULL;
75- const struct firmware *mainfw = NULL;
76
77 lbs_deb_enter(LBS_DEB_SDIO);
78
79@@ -708,41 +740,18 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card)
80 */
81 if (scratch == IF_SDIO_FIRMWARE_OK) {
82 lbs_deb_sdio("firmware already loaded\n");
83- goto success;
84+ if_sdio_finish_power_on(card);
85+ return 0;
86 } else if ((card->model == MODEL_8686) && (scratch & 0x7fff)) {
87 lbs_deb_sdio("firmware may be running\n");
88- goto success;
89- }
90-
91- ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0],
92- &helper, &mainfw);
93- if (ret) {
94- pr_err("failed to find firmware (%d)\n", ret);
95- goto out;
96+ if_sdio_finish_power_on(card);
97+ return 0;
98 }
99
100- ret = if_sdio_prog_helper(card, helper);
101- if (ret)
102- goto out;
103-
104- lbs_deb_sdio("Helper firmware loaded\n");
105-
106- ret = if_sdio_prog_real(card, mainfw);
107- if (ret)
108- goto out;
109-
110- lbs_deb_sdio("Firmware loaded\n");
111-
112-success:
113- sdio_claim_host(card->func);
114- sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
115- sdio_release_host(card->func);
116- ret = 0;
117+ ret = lbs_get_firmware_async(card->priv, &card->func->dev, card->model,
118+ fw_table, if_sdio_do_prog_firmware);
119
120 out:
121- release_firmware(helper);
122- release_firmware(mainfw);
123-
124 lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
125 return ret;
126 }
127@@ -751,55 +760,15 @@ out:
128 /* Power management */
129 /********************************************************************/
130
131-static int if_sdio_power_on(struct if_sdio_card *card)
132+/* Finish power on sequence (after firmware is loaded) */
133+static void if_sdio_finish_power_on(struct if_sdio_card *card)
134 {
135 struct sdio_func *func = card->func;
136 struct lbs_private *priv = card->priv;
137- struct mmc_host *host = func->card->host;
138 int ret;
139
140 sdio_claim_host(func);
141-
142- ret = sdio_enable_func(func);
143- if (ret)
144- goto release;
145-
146- /* For 1-bit transfers to the 8686 model, we need to enable the
147- * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
148- * bit to allow access to non-vendor registers. */
149- if ((card->model == MODEL_8686) &&
150- (host->caps & MMC_CAP_SDIO_IRQ) &&
151- (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
152- u8 reg;
153-
154- func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
155- reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
156- if (ret)
157- goto disable;
158-
159- reg |= SDIO_BUS_ECSI;
160- sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
161- if (ret)
162- goto disable;
163- }
164-
165- card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
166- if (ret)
167- goto disable;
168-
169- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
170- if (ret)
171- goto disable;
172-
173- card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
174- if (ret)
175- goto disable;
176-
177- sdio_release_host(func);
178- ret = if_sdio_prog_firmware(card);
179- sdio_claim_host(func);
180- if (ret)
181- goto disable;
182+ sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
183
184 /*
185 * Get rx_unit if the chip is SD8688 or newer.
186@@ -824,7 +793,7 @@ static int if_sdio_power_on(struct if_sdio_card *card)
187 */
188 ret = sdio_claim_irq(func, if_sdio_interrupt);
189 if (ret)
190- goto disable;
191+ goto release;
192
193 /*
194 * Enable interrupts now that everything is set up
195@@ -850,11 +819,79 @@ static int if_sdio_power_on(struct if_sdio_card *card)
196 }
197
198 priv->fw_ready = 1;
199+ wake_up(&card->pwron_waitq);
200
201- return 0;
202+ if (!card->started) {
203+ ret = lbs_start_card(priv);
204+ if_sdio_power_off(card);
205+ if (ret == 0) {
206+ card->started = true;
207+ /* Tell PM core that we don't need the card to be
208+ * powered now */
209+ pm_runtime_put_noidle(&func->dev);
210+ }
211+ }
212+
213+ return;
214
215 release_irq:
216 sdio_release_irq(func);
217+release:
218+ sdio_release_host(func);
219+}
220+
221+static int if_sdio_power_on(struct if_sdio_card *card)
222+{
223+ struct sdio_func *func = card->func;
224+ struct mmc_host *host = func->card->host;
225+ int ret;
226+
227+ sdio_claim_host(func);
228+
229+ ret = sdio_enable_func(func);
230+ if (ret)
231+ goto release;
232+
233+ /* For 1-bit transfers to the 8686 model, we need to enable the
234+ * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
235+ * bit to allow access to non-vendor registers. */
236+ if ((card->model == MODEL_8686) &&
237+ (host->caps & MMC_CAP_SDIO_IRQ) &&
238+ (host->ios.bus_width == MMC_BUS_WIDTH_1)) {
239+ u8 reg;
240+
241+ func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
242+ reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret);
243+ if (ret)
244+ goto disable;
245+
246+ reg |= SDIO_BUS_ECSI;
247+ sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret);
248+ if (ret)
249+ goto disable;
250+ }
251+
252+ card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
253+ if (ret)
254+ goto disable;
255+
256+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8;
257+ if (ret)
258+ goto disable;
259+
260+ card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16;
261+ if (ret)
262+ goto disable;
263+
264+ sdio_release_host(func);
265+ ret = if_sdio_prog_firmware(card);
266+ if (ret) {
267+ sdio_disable_func(func);
268+ return ret;
269+ }
270+
271+ return 0;
272+
273 disable:
274 sdio_disable_func(func);
275 release:
276@@ -1061,11 +1098,17 @@ static int if_sdio_power_save(struct lbs_private *priv)
277 static int if_sdio_power_restore(struct lbs_private *priv)
278 {
279 struct if_sdio_card *card = priv->card;
280+ int r;
281
282 /* Make sure the card will not be powered off by runtime PM */
283 pm_runtime_get_sync(&card->func->dev);
284
285- return if_sdio_power_on(card);
286+ r = if_sdio_power_on(card);
287+ if (r)
288+ return r;
289+
290+ wait_event(card->pwron_waitq, priv->fw_ready);
291+ return 0;
292 }
293
294
295@@ -1166,6 +1209,7 @@ static int if_sdio_probe(struct sdio_func *func,
296 spin_lock_init(&card->lock);
297 card->workqueue = create_workqueue("libertas_sdio");
298 INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker);
299+ init_waitqueue_head(&card->pwron_waitq);
300
301 /* Check if we support this card */
302 for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
303@@ -1207,14 +1251,6 @@ static int if_sdio_probe(struct sdio_func *func,
304 if (ret)
305 goto err_activate_card;
306
307- ret = lbs_start_card(priv);
308- if_sdio_power_off(card);
309- if (ret)
310- goto err_activate_card;
311-
312- /* Tell PM core that we don't need the card to be powered now */
313- pm_runtime_put_noidle(&func->dev);
314-
315 out:
316 lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
317
318--
3191.7.9.5
320
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
new file mode 100644
index 00000000..b8cffc2a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch
@@ -0,0 +1,201 @@
1From b42ea4e3a1fa84b7de451e96e09067b95354f6f5 Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Mon, 16 Apr 2012 23:53:55 +0100
4Subject: [PATCH 13/16] libertas USB: convert to asynchronous firmware loading
5
6Signed-off-by: Daniel Drake <dsd@laptop.org>
7Acked-by: Dan Williams <dcbw@redhat.com>
8Signed-off-by: John W. Linville <linville@tuxdriver.com>
9---
10 drivers/net/wireless/libertas/if_usb.c | 102 ++++++++++++++------------------
11 1 file changed, 43 insertions(+), 59 deletions(-)
12
13diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
14index f29471b..75403e6 100644
15--- a/drivers/net/wireless/libertas/if_usb.c
16+++ b/drivers/net/wireless/libertas/if_usb.c
17@@ -41,6 +41,16 @@ enum {
18 MODEL_8682 = 0x2
19 };
20
21+/* table of firmware file names */
22+static const struct lbs_fw_table fw_table[] = {
23+ { MODEL_8388, "libertas/usb8388_olpc.bin", NULL },
24+ { MODEL_8388, "libertas/usb8388_v9.bin", NULL },
25+ { MODEL_8388, "libertas/usb8388_v5.bin", NULL },
26+ { MODEL_8388, "libertas/usb8388.bin", NULL },
27+ { MODEL_8388, "usb8388.bin", NULL },
28+ { MODEL_8682, "libertas/usb8682.bin", NULL }
29+};
30+
31 static struct usb_device_id if_usb_table[] = {
32 /* Enter the device signature inside */
33 { USB_DEVICE(0x1286, 0x2001), .driver_info = MODEL_8388 },
34@@ -52,7 +62,9 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
35
36 static void if_usb_receive(struct urb *urb);
37 static void if_usb_receive_fwload(struct urb *urb);
38-static int if_usb_prog_firmware(struct if_usb_card *cardp);
39+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
40+ const struct firmware *fw,
41+ const struct firmware *unused);
42 static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type,
43 uint8_t *payload, uint16_t nb);
44 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
45@@ -187,6 +199,7 @@ static int if_usb_probe(struct usb_interface *intf,
46 struct usb_endpoint_descriptor *endpoint;
47 struct lbs_private *priv;
48 struct if_usb_card *cardp;
49+ int r = -ENOMEM;
50 int i;
51
52 udev = interface_to_usbdev(intf);
53@@ -244,17 +257,10 @@ static int if_usb_probe(struct usb_interface *intf,
54 goto dealloc;
55 }
56
57- /* Upload firmware */
58- if (if_usb_prog_firmware(cardp)) {
59- lbs_deb_usbd(&udev->dev, "FW upload failed\n");
60- goto err_prog_firmware;
61- }
62-
63 if (!(priv = lbs_add_card(cardp, &intf->dev)))
64- goto err_prog_firmware;
65+ goto err_add_card;
66
67 cardp->priv = priv;
68- cardp->priv->fw_ready = 1;
69
70 priv->hw_host_to_card = if_usb_host_to_card;
71 priv->enter_deep_sleep = NULL;
72@@ -267,34 +273,25 @@ static int if_usb_probe(struct usb_interface *intf,
73
74 cardp->boot2_version = udev->descriptor.bcdDevice;
75
76- if_usb_submit_rx_urb(cardp);
77-
78- if (lbs_start_card(priv))
79- goto err_start_card;
80-
81- if_usb_setup_firmware(priv);
82-
83 usb_get_dev(udev);
84 usb_set_intfdata(intf, cardp);
85
86- /*
87- * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
88- */
89- priv->wol_criteria = EHS_REMOVE_WAKEUP;
90- if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
91- priv->ehs_remove_supported = false;
92+ r = lbs_get_firmware_async(priv, &udev->dev, cardp->model,
93+ fw_table, if_usb_prog_firmware);
94+ if (r)
95+ goto err_get_fw;
96
97 return 0;
98
99-err_start_card:
100+err_get_fw:
101 lbs_remove_card(priv);
102-err_prog_firmware:
103+err_add_card:
104 if_usb_reset_device(cardp);
105 dealloc:
106 if_usb_free(cardp);
107
108 error:
109- return -ENOMEM;
110+ return r;
111 }
112
113 /**
114@@ -829,49 +826,22 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen)
115 return ret;
116 }
117
118-/* table of firmware file names */
119-static const struct {
120- u32 model;
121- const char *fwname;
122-} fw_table[] = {
123- { MODEL_8388, "libertas/usb8388_olpc.bin" },
124- { MODEL_8388, "libertas/usb8388_v9.bin" },
125- { MODEL_8388, "libertas/usb8388_v5.bin" },
126- { MODEL_8388, "libertas/usb8388.bin" },
127- { MODEL_8388, "usb8388.bin" },
128- { MODEL_8682, "libertas/usb8682.bin" }
129-};
130-
131-static int get_fw(struct if_usb_card *cardp)
132-{
133- int i;
134-
135- /* Otherwise search for firmware to use */
136- for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
137- if (fw_table[i].model != cardp->model)
138- continue;
139- if (request_firmware(&cardp->fw, fw_table[i].fwname,
140- &cardp->udev->dev) == 0)
141- return 0;
142- }
143-
144- return -ENOENT;
145-}
146-
147-static int if_usb_prog_firmware(struct if_usb_card *cardp)
148+static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
149+ const struct firmware *fw,
150+ const struct firmware *unused)
151 {
152+ struct if_usb_card *cardp = priv->card;
153 int i = 0;
154 static int reset_count = 10;
155- int ret = 0;
156
157 lbs_deb_enter(LBS_DEB_USB);
158
159- ret = get_fw(cardp);
160 if (ret) {
161 pr_err("failed to find firmware (%d)\n", ret);
162 goto done;
163 }
164
165+ cardp->fw = fw;
166 if (check_fwfile_format(cardp->fw->data, cardp->fw->size)) {
167 ret = -EINVAL;
168 goto release_fw;
169@@ -954,13 +924,27 @@ restart:
170 goto release_fw;
171 }
172
173+ cardp->priv->fw_ready = 1;
174+ if_usb_submit_rx_urb(cardp);
175+
176+ if (lbs_start_card(priv))
177+ goto release_fw;
178+
179+ if_usb_setup_firmware(priv);
180+
181+ /*
182+ * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware.
183+ */
184+ priv->wol_criteria = EHS_REMOVE_WAKEUP;
185+ if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL))
186+ priv->ehs_remove_supported = false;
187+
188 release_fw:
189 release_firmware(cardp->fw);
190 cardp->fw = NULL;
191
192 done:
193- lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret);
194- return ret;
195+ lbs_deb_leave(LBS_DEB_USB);
196 }
197
198
199--
2001.7.9.5
201
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch
new file mode 100644
index 00000000..fcc2620d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch
@@ -0,0 +1,154 @@
1From 6e1c2a1ef946804055ac05dd347c06fb8e836dcc Mon Sep 17 00:00:00 2001
2From: Daniel Drake <dsd@laptop.org>
3Date: Wed, 18 Apr 2012 20:09:44 +0100
4Subject: [PATCH 14/16] libertas CS: convert to asynchronous firmware loading
5
6Signed-off-by: Daniel Drake <dsd@laptop.org>
7Tested-by: Dan Williams <dcbw@redhat.com>
8Acked-by: Dan Williams <dcbw@redhat.com>
9Signed-off-by: John W. Linville <linville@tuxdriver.com>
10---
11 drivers/net/wireless/libertas/if_cs.c | 88 ++++++++++++++++++---------------
12 1 file changed, 49 insertions(+), 39 deletions(-)
13
14diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c
15index cee5052..16beaf3 100644
16--- a/drivers/net/wireless/libertas/if_cs.c
17+++ b/drivers/net/wireless/libertas/if_cs.c
18@@ -738,6 +738,50 @@ done:
19 return ret;
20 }
21
22+static void if_cs_prog_firmware(struct lbs_private *priv, int ret,
23+ const struct firmware *helper,
24+ const struct firmware *mainfw)
25+{
26+ struct if_cs_card *card = priv->card;
27+
28+ if (ret) {
29+ pr_err("failed to find firmware (%d)\n", ret);
30+ return;
31+ }
32+
33+ /* Load the firmware */
34+ ret = if_cs_prog_helper(card, helper);
35+ if (ret == 0 && (card->model != MODEL_8305))
36+ ret = if_cs_prog_real(card, mainfw);
37+ if (ret)
38+ goto out;
39+
40+ /* Now actually get the IRQ */
41+ ret = request_irq(card->p_dev->irq, if_cs_interrupt,
42+ IRQF_SHARED, DRV_NAME, card);
43+ if (ret) {
44+ pr_err("error in request_irq\n");
45+ goto out;
46+ }
47+
48+ /*
49+ * Clear any interrupt cause that happened while sending
50+ * firmware/initializing card
51+ */
52+ if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
53+ if_cs_enable_ints(card);
54+
55+ /* And finally bring the card up */
56+ priv->fw_ready = 1;
57+ if (lbs_start_card(priv) != 0) {
58+ pr_err("could not activate card\n");
59+ free_irq(card->p_dev->irq, card);
60+ }
61+
62+out:
63+ release_firmware(helper);
64+ release_firmware(mainfw);
65+}
66
67
68 /********************************************************************/
69@@ -809,8 +853,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
70 unsigned int prod_id;
71 struct lbs_private *priv;
72 struct if_cs_card *card;
73- const struct firmware *helper = NULL;
74- const struct firmware *mainfw = NULL;
75
76 lbs_deb_enter(LBS_DEB_CS);
77
78@@ -890,20 +932,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
79 goto out2;
80 }
81
82- ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0],
83- &helper, &mainfw);
84- if (ret) {
85- pr_err("failed to find firmware (%d)\n", ret);
86- goto out2;
87- }
88-
89- /* Load the firmware early, before calling into libertas.ko */
90- ret = if_cs_prog_helper(card, helper);
91- if (ret == 0 && (card->model != MODEL_8305))
92- ret = if_cs_prog_real(card, mainfw);
93- if (ret)
94- goto out2;
95-
96 /* Make this card known to the libertas driver */
97 priv = lbs_add_card(card, &p_dev->dev);
98 if (!priv) {
99@@ -911,37 +939,22 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
100 goto out2;
101 }
102
103- /* Finish setting up fields in lbs_private */
104+ /* Set up fields in lbs_private */
105 card->priv = priv;
106 priv->card = card;
107 priv->hw_host_to_card = if_cs_host_to_card;
108 priv->enter_deep_sleep = NULL;
109 priv->exit_deep_sleep = NULL;
110 priv->reset_deep_sleep_wakeup = NULL;
111- priv->fw_ready = 1;
112
113- /* Now actually get the IRQ */
114- ret = request_irq(p_dev->irq, if_cs_interrupt,
115- IRQF_SHARED, DRV_NAME, card);
116+ /* Get firmware */
117+ ret = lbs_get_firmware_async(priv, &p_dev->dev, card->model, fw_table,
118+ if_cs_prog_firmware);
119 if (ret) {
120- pr_err("error in request_irq\n");
121- goto out3;
122- }
123-
124- /*
125- * Clear any interrupt cause that happened while sending
126- * firmware/initializing card
127- */
128- if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK);
129- if_cs_enable_ints(card);
130-
131- /* And finally bring the card up */
132- if (lbs_start_card(priv) != 0) {
133- pr_err("could not activate card\n");
134+ pr_err("failed to find firmware (%d)\n", ret);
135 goto out3;
136 }
137
138- ret = 0;
139 goto out;
140
141 out3:
142@@ -951,9 +964,6 @@ out2:
143 out1:
144 pcmcia_disable_device(p_dev);
145 out:
146- release_firmware(helper);
147- release_firmware(mainfw);
148-
149 lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
150 return ret;
151 }
152--
1531.7.9.5
154
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch
new file mode 100644
index 00000000..0506d5c0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch
@@ -0,0 +1,30 @@
1From d149dba44b6840fec19f18b768220766f7c529a8 Mon Sep 17 00:00:00 2001
2From: Felix Fietkau <nbd@openwrt.org>
3Date: Thu, 19 Apr 2012 13:54:12 +0200
4Subject: [PATCH 15/16] libertas: add missing include
5
6Without it, I get compile errors due to missing TASK_NORMAL,
7TASK_UNINTERRUPTIBLE and schedule.
8
9Signed-off-by: Felix Fietkau <nbd@openwrt.org>
10Acked-by: Dan Williams <dcbw@redhat.com>
11Signed-off-by: John W. Linville <linville@tuxdriver.com>
12---
13 drivers/net/wireless/libertas/firmware.c | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c
17index cd23f1a..77f6504 100644
18--- a/drivers/net/wireless/libertas/firmware.c
19+++ b/drivers/net/wireless/libertas/firmware.c
20@@ -5,6 +5,7 @@
21 #include <linux/firmware.h>
22 #include <linux/firmware.h>
23 #include <linux/module.h>
24+#include <linux/sched.h>
25
26 #include "dev.h"
27 #include "decl.h"
28--
291.7.9.5
30
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch
new file mode 100644
index 00000000..dec119ad
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch
@@ -0,0 +1,35 @@
1From 21bcbe43eb2923da9f17a0ac826b40f6cc7161cd Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Mon, 21 May 2012 17:01:23 +0200
4Subject: [PATCH 16/16] remove debug msgs due to missing in_interrupt
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
10---
11 drivers/net/wireless/libertas/defs.h | 7 -------
12 1 file changed, 7 deletions(-)
13
14diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h
15index ab966f0..a80b40e 100644
16--- a/drivers/net/wireless/libertas/defs.h
17+++ b/drivers/net/wireless/libertas/defs.h
18@@ -46,14 +46,7 @@
19
20 extern unsigned int lbs_debug;
21
22-#ifdef DEBUG
23-#define LBS_DEB_LL(grp, grpnam, fmt, args...) \
24-do { if ((lbs_debug & (grp)) == (grp)) \
25- printk(KERN_DEBUG DRV_NAME grpnam "%s: " fmt, \
26- in_interrupt() ? " (INT)" : "", ## args); } while (0)
27-#else
28 #define LBS_DEB_LL(grp, grpnam, fmt, args...) do {} while (0)
29-#endif
30
31 #define lbs_deb_enter(grp) \
32 LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s()\n", __func__);
33--
341.7.9.5
35
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch
new file mode 100644
index 00000000..43e5febf
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch
@@ -0,0 +1,66 @@
1From 97ffca5e70b312b81bdf095d1d2a104fdaa98aba Mon Sep 17 00:00:00 2001
2From: "Philip, Avinash" <avinashphilip@ti.com>
3Date: Mon, 4 Jun 2012 18:45:45 +0530
4Subject: [PATCH 19/19] MMC: OMAP-HS: Enable HSPE bit for high speed cards.
5
6By outputting CMD line and DAT lines at the rising edge of the SD clock,
7setup timings is increased and allows reaching higher bus frequency.
8This feature is activated by setting SD_HCTL[2] HSPE bit to 1. This is
9required for High Speed Cards.
10
11When card is operating at high speed, MMC/SD serial output clock is set
12to >25 MHz. This patch makes use of this clock value to set HSPE.
13
14Also, this bit will be cleared on card removal & for non-high speed
15cards.
16
17Tested on High speed cards (SDHC class 10, micro SDHC class 4) and
18normal speed cards like SDHC class 4.
19
20Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
21---
22 drivers/mmc/host/omap_hsmmc.c | 14 +++++++++++++-
23 1 file changed, 13 insertions(+), 1 deletion(-)
24
25diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
26index 1f938d9..22da8f2 100644
27--- a/drivers/mmc/host/omap_hsmmc.c
28+++ b/drivers/mmc/host/omap_hsmmc.c
29@@ -90,6 +90,7 @@
30 #define MSBS (1 << 5)
31 #define BCE (1 << 1)
32 #define FOUR_BIT (1 << 1)
33+#define HSPE (1 << 2)
34 #define DVAL_MASK (3 << 9)
35 #define DVAL_MAX (3 << 9) /* 8.4 ms debounce period */
36 #define WPP_MASK (1 << 8)
37@@ -634,14 +635,25 @@ static void omap_hsmmc_set_clock(struct omap_hsmmc_host *host)
38 struct mmc_ios *ios = &host->mmc->ios;
39 unsigned long regval;
40 unsigned long timeout;
41+ unsigned long clkdiv;
42
43 dev_dbg(mmc_dev(host->mmc), "Set clock to %uHz\n", ios->clock);
44
45+ clkdiv = calc_divisor(host, ios);
46+ regval = OMAP_HSMMC_READ(host->base, HCTL);
47+ /* Enable HSPE bit for high speed card */
48+ if (ios->clock && (clk_get_rate(host->fclk)/clkdiv) > 25000000)
49+ regval |= HSPE;
50+ else
51+ regval &= ~HSPE;
52+
53+ OMAP_HSMMC_WRITE(host->base, HCTL, regval);
54+
55 omap_hsmmc_stop_clock(host);
56
57 regval = OMAP_HSMMC_READ(host->base, SYSCTL);
58 regval = regval & ~(CLKD_MASK | DTO_MASK);
59- regval = regval | (calc_divisor(host, ios) << 6) | (DTO << 16);
60+ regval = regval | (clkdiv << 6) | (DTO << 16);
61 OMAP_HSMMC_WRITE(host->base, SYSCTL, regval);
62 OMAP_HSMMC_WRITE(host->base, SYSCTL,
63 OMAP_HSMMC_READ(host->base, SYSCTL) | ICE);
64--
651.7.9.5
66
diff --git a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
index 3243998e..645d4dc6 100644
--- a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
+++ b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb
@@ -11,11 +11,11 @@ S = "${WORKDIR}/git"
11MULTI_CONFIG_BASE_SUFFIX = "" 11MULTI_CONFIG_BASE_SUFFIX = ""
12 12
13# the PATCHES_OVER_PSP updates it to 3.2.x, so adjust PV to match 13# the PATCHES_OVER_PSP updates it to 3.2.x, so adjust PV to match
14PV = "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "3.2", "3.2.18", d)}" 14PV = "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "3.2", "3.2.21", d)}"
15 15
16BRANCH = "v3.2-staging" 16BRANCH = "v3.2-staging"
17SRCREV = "720e07b4c1f687b61b147b31c698cb6816d72f01" 17SRCREV = "720e07b4c1f687b61b147b31c698cb6816d72f01"
18MACHINE_KERNEL_PR_append = "i+gitr${SRCREV}" 18MACHINE_KERNEL_PR_append = "a+gitr${SRCREV}"
19 19
20COMPATIBLE_MACHINE = "(ti33x)" 20COMPATIBLE_MACHINE = "(ti33x)"
21 21
@@ -56,6 +56,7 @@ PATCHES_OVER_PSP = " \
56 file://psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch \ 56 file://psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch \
57 file://psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch \ 57 file://psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch \
58 file://psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch \ 58 file://psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch \
59 file://psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch \
59 file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \ 60 file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \
60 file://3.2.1/0002-Documentation-Update-stable-address.patch \ 61 file://3.2.1/0002-Documentation-Update-stable-address.patch \
61 file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \ 62 file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \
@@ -1174,7 +1175,293 @@ PATCHES_OVER_PSP = " \
1174 file://3.2.18/0054-pktgen-fix-crash-at-module-unload.patch \ 1175 file://3.2.18/0054-pktgen-fix-crash-at-module-unload.patch \
1175 file://3.2.18/0055-pktgen-fix-module-unload-for-good.patch \ 1176 file://3.2.18/0055-pktgen-fix-module-unload-for-good.patch \
1176 file://3.2.18/0056-Linux-3.2.18.patch \ 1177 file://3.2.18/0056-Linux-3.2.18.patch \
1178 file://3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch \
1179 file://3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch \
1180 file://3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch \
1181 file://3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch \
1182 file://3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch \
1183 file://3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch \
1184 file://3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch \
1185 file://3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch \
1186 file://3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch \
1187 file://3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch \
1188 file://3.2.19/0011-fix-PA1.1-oops-on-boot.patch \
1189 file://3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch \
1190 file://3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch \
1191 file://3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch \
1192 file://3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch \
1193 file://3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch \
1194 file://3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch \
1195 file://3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch \
1196 file://3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch \
1197 file://3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch \
1198 file://3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch \
1199 file://3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch \
1200 file://3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch \
1201 file://3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch \
1202 file://3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch \
1203 file://3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch \
1204 file://3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch \
1205 file://3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch \
1206 file://3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch \
1207 file://3.2.19/0030-s390-pfault-fix-task-state-race.patch \
1208 file://3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch \
1209 file://3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch \
1210 file://3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch \
1211 file://3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch \
1212 file://3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch \
1213 file://3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch \
1214 file://3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch \
1215 file://3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch \
1216 file://3.2.19/0039-8250_pci-fix-pch-uart-matching.patch \
1217 file://3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch \
1218 file://3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch \
1219 file://3.2.19/0042-8250.c-less-than-2400-baud-fix.patch \
1220 file://3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch \
1221 file://3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch \
1222 file://3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch \
1223 file://3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch \
1224 file://3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch \
1225 file://3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch \
1226 file://3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch \
1227 file://3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch \
1228 file://3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch \
1229 file://3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch \
1230 file://3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch \
1231 file://3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch \
1232 file://3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch \
1233 file://3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch \
1234 file://3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch \
1235 file://3.2.19/0058-tty-Allow-uart_register-unregister-register.patch \
1236 file://3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch \
1237 file://3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch \
1238 file://3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch \
1239 file://3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch \
1240 file://3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch \
1241 file://3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch \
1242 file://3.2.19/0065-USB-Remove-races-in-devio.c.patch \
1243 file://3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch \
1244 file://3.2.19/0067-um-Implement-a-custom-pte_same-function.patch \
1245 file://3.2.19/0068-um-Fix-__swp_type.patch \
1246 file://3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch \
1247 file://3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch \
1248 file://3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch \
1249 file://3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch \
1250 file://3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch \
1251 file://3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch \
1252 file://3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch \
1253 file://3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch \
1254 file://3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch \
1255 file://3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch \
1256 file://3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch \
1257 file://3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch \
1258 file://3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch \
1259 file://3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch \
1260 file://3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch \
1261 file://3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch \
1262 file://3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch \
1263 file://3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch \
1264 file://3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch \
1265 file://3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch \
1266 file://3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch \
1267 file://3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch \
1268 file://3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch \
1269 file://3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch \
1270 file://3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch \
1271 file://3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch \
1272 file://3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch \
1273 file://3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch \
1274 file://3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch \
1275 file://3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch \
1276 file://3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch \
1277 file://3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch \
1278 file://3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch \
1279 file://3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch \
1280 file://3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch \
1281 file://3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch \
1282 file://3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch \
1283 file://3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch \
1284 file://3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch \
1285 file://3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch \
1286 file://3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch \
1287 file://3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch \
1288 file://3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch \
1289 file://3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch \
1290 file://3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch \
1291 file://3.2.19/0114-x86-relocs-Build-clean-fix.patch \
1292 file://3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch \
1293 file://3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch \
1294 file://3.2.19/0117-Linux-3.2.19.patch \
1295 file://3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch \
1296 file://3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch \
1297 file://3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch \
1298 file://3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch \
1299 file://3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch \
1300 file://3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch \
1301 file://3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch \
1302 file://3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch \
1303 file://3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch \
1304 file://3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch \
1305 file://3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch \
1306 file://3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch \
1307 file://3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch \
1308 file://3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch \
1309 file://3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch \
1310 file://3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch \
1311 file://3.2.20/0017-solos-pci-Fix-DMA-support.patch \
1312 file://3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch \
1313 file://3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch \
1314 file://3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch \
1315 file://3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch \
1316 file://3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch \
1317 file://3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch \
1318 file://3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch \
1319 file://3.2.20/0025-drm-radeon-fix-XFX-quirk.patch \
1320 file://3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch \
1321 file://3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch \
1322 file://3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch \
1323 file://3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch \
1324 file://3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch \
1325 file://3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch \
1326 file://3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch \
1327 file://3.2.20/0033-fix-scsi_wait_scan.patch \
1328 file://3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch \
1329 file://3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch \
1330 file://3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch \
1331 file://3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch \
1332 file://3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch \
1333 file://3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch \
1334 file://3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch \
1335 file://3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch \
1336 file://3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch \
1337 file://3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch \
1338 file://3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch \
1339 file://3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch \
1340 file://3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch \
1341 file://3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch \
1342 file://3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch \
1343 file://3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch \
1344 file://3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch \
1345 file://3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch \
1346 file://3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch \
1347 file://3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch \
1348 file://3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch \
1349 file://3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch \
1350 file://3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch \
1351 file://3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch \
1352 file://3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch \
1353 file://3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch \
1354 file://3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch \
1355 file://3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch \
1356 file://3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch \
1357 file://3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch \
1358 file://3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch \
1359 file://3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch \
1360 file://3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch \
1361 file://3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch \
1362 file://3.2.20/0068-r8169-missing-barriers.patch \
1363 file://3.2.20/0069-r8169-fix-early-queue-wake-up.patch \
1364 file://3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch \
1365 file://3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch \
1366 file://3.2.20/0072-sctp-check-cached-dst-before-using-it.patch \
1367 file://3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch \
1368 file://3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch \
1369 file://3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch \
1370 file://3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch \
1371 file://3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch \
1372 file://3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch \
1373 file://3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch \
1374 file://3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch \
1375 file://3.2.20/0081-kbuild-install-kernel-page-flags.h.patch \
1376 file://3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch \
1377 file://3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch \
1378 file://3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch \
1379 file://3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch \
1380 file://3.2.20/0086-Linux-3.2.20.patch \
1381 file://3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch \
1382 file://3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch \
1383 file://3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch \
1384 file://3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch \
1385 file://3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch \
1386 file://3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch \
1387 file://3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch \
1388 file://3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch \
1389 file://3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch \
1390 file://3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch \
1391 file://3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch \
1392 file://3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch \
1393 file://3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch \
1394 file://3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch \
1395 file://3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch \
1396 file://3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch \
1397 file://3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch \
1398 file://3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch \
1399 file://3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch \
1400 file://3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch \
1401 file://3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch \
1402 file://3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch \
1403 file://3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch \
1404 file://3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch \
1405 file://3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch \
1406 file://3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch \
1407 file://3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch \
1408 file://3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch \
1409 file://3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch \
1410 file://3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch \
1411 file://3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch \
1412 file://3.2.21/0032-cfg80211-fix-interface-combinations-check.patch \
1413 file://3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch \
1414 file://3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch \
1415 file://3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch \
1416 file://3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch \
1417 file://3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch \
1418 file://3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch \
1419 file://3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch \
1420 file://3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch \
1421 file://3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch \
1422 file://3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch \
1423 file://3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch \
1424 file://3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch \
1425 file://3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch \
1426 file://3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch \
1427 file://3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch \
1428 file://3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch \
1429 file://3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch \
1430 file://3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch \
1431 file://3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch \
1432 file://3.2.21/0052-USB-option-fix-port-data-abuse.patch \
1433 file://3.2.21/0053-USB-option-fix-memory-leak.patch \
1434 file://3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch \
1435 file://3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch \
1436 file://3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch \
1437 file://3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch \
1438 file://3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch \
1439 file://3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch \
1440 file://3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch \
1441 file://3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch \
1442 file://3.2.21/0062-USB-fix-PS3-EHCI-systems.patch \
1443 file://3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch \
1444 file://3.2.21/0064-USB-fix-gathering-of-interface-associations.patch \
1445 file://3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch \
1446 file://3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch \
1447 file://3.2.21/0067-Linux-3.2.21.patch \
1177 file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \ 1448 file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \
1449 file://libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch \
1450 file://libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch \
1451 file://libertas/0003-switch-debugfs-to-umode_t.patch \
1452 file://libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch \
1453 file://libertas/0005-libertas-remove-dump_survey-implementation.patch \
1454 file://libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch \
1455 file://libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch \
1456 file://libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch \
1457 file://libertas/0009-libertas-Firmware-loading-simplifications.patch \
1458 file://libertas/0010-libertas-harden-up-exit-paths.patch \
1459 file://libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch \
1460 file://libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch \
1461 file://libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch \
1462 file://libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch \
1463 file://libertas/0015-libertas-add-missing-include.patch \
1464 file://libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch \
1178 \ 1465 \
1179 file://beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch \ 1466 file://beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch \
1180 \ 1467 \
@@ -1248,4 +1535,5 @@ PATCHES_OVER_PSP = " \
1248 file://beaglebone/0068-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch \ 1535 file://beaglebone/0068-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch \
1249 file://beaglebone/0069-beaglebone-add-support-for-LCD3-rev-A1.patch \ 1536 file://beaglebone/0069-beaglebone-add-support-for-LCD3-rev-A1.patch \
1250 file://beaglebone/0070-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch \ 1537 file://beaglebone/0070-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch \
1538 file://beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch \
1251" 1539"